asterui 0.12.21 → 0.12.23
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.
- package/dist/components/VirtualList.d.ts +29 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +46 -44
- package/dist/index.js.map +1 -1
- package/dist/index10.js +1 -1
- package/dist/index100.js +32 -5
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +5 -13
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +11 -43
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +44 -11
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +10 -12
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +14 -7
- package/dist/index105.js.map +1 -1
- package/dist/index106.js +7 -12
- package/dist/index106.js.map +1 -1
- package/dist/index107.js +11 -29
- package/dist/index107.js.map +1 -1
- package/dist/index108.js +29 -16
- package/dist/index108.js.map +1 -1
- package/dist/index109.js +21 -0
- package/dist/index109.js.map +1 -0
- package/dist/index11.js +14 -14
- package/dist/index110.js +36 -0
- package/dist/index110.js.map +1 -0
- package/dist/index111.js +523 -0
- package/dist/index111.js.map +1 -0
- package/dist/index112.js +53 -0
- package/dist/index112.js.map +1 -0
- package/dist/index20.js +8 -8
- package/dist/index23.js +13 -13
- package/dist/index28.js +2 -2
- package/dist/index36.js +5 -5
- package/dist/index40.js +6 -6
- package/dist/index41.js +30 -30
- package/dist/index45.js +5 -5
- package/dist/index47.js +15 -15
- package/dist/index51.js +18 -18
- package/dist/index51.js.map +1 -1
- package/dist/index55.js +4 -4
- package/dist/index55.js.map +1 -1
- package/dist/index58.js +22 -22
- package/dist/index62.js +12 -12
- package/dist/index64.js +13 -13
- package/dist/index68.js +12 -12
- package/dist/index71.js +19 -19
- package/dist/index76.js +2 -2
- package/dist/index77.js +21 -21
- package/dist/index8.js +18 -18
- package/dist/index80.js +13 -13
- package/dist/index82.js +23 -23
- package/dist/index88.js +2 -2
- package/dist/index97.js +61 -121
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +126 -14
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +12 -31
- package/dist/index99.js.map +1 -1
- package/package.json +6 -1
package/dist/index111.js
ADDED
|
@@ -0,0 +1,523 @@
|
|
|
1
|
+
import { memo as p, notUndefined as O, approxEqual as I, debounce as A } from "./index112.js";
|
|
2
|
+
const y = (r) => {
|
|
3
|
+
const { offsetWidth: h, offsetHeight: e } = r;
|
|
4
|
+
return { width: h, height: e };
|
|
5
|
+
}, R = (r) => r, F = (r) => {
|
|
6
|
+
const h = Math.max(r.startIndex - r.overscan, 0), e = Math.min(r.endIndex + r.overscan, r.count - 1), s = [];
|
|
7
|
+
for (let t = h; t <= e; t++)
|
|
8
|
+
s.push(t);
|
|
9
|
+
return s;
|
|
10
|
+
}, W = (r, h) => {
|
|
11
|
+
const e = r.scrollElement;
|
|
12
|
+
if (!e)
|
|
13
|
+
return;
|
|
14
|
+
const s = r.targetWindow;
|
|
15
|
+
if (!s)
|
|
16
|
+
return;
|
|
17
|
+
const t = (i) => {
|
|
18
|
+
const { width: o, height: a } = i;
|
|
19
|
+
h({ width: Math.round(o), height: Math.round(a) });
|
|
20
|
+
};
|
|
21
|
+
if (t(y(e)), !s.ResizeObserver)
|
|
22
|
+
return () => {
|
|
23
|
+
};
|
|
24
|
+
const n = new s.ResizeObserver((i) => {
|
|
25
|
+
const o = () => {
|
|
26
|
+
const a = i[0];
|
|
27
|
+
if (a?.borderBoxSize) {
|
|
28
|
+
const d = a.borderBoxSize[0];
|
|
29
|
+
if (d) {
|
|
30
|
+
t({ width: d.inlineSize, height: d.blockSize });
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
t(y(e));
|
|
35
|
+
};
|
|
36
|
+
r.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(o) : o();
|
|
37
|
+
});
|
|
38
|
+
return n.observe(e, { box: "border-box" }), () => {
|
|
39
|
+
n.unobserve(e);
|
|
40
|
+
};
|
|
41
|
+
}, M = {
|
|
42
|
+
passive: !0
|
|
43
|
+
}, w = typeof window > "u" ? !0 : "onscrollend" in window, D = (r, h) => {
|
|
44
|
+
const e = r.scrollElement;
|
|
45
|
+
if (!e)
|
|
46
|
+
return;
|
|
47
|
+
const s = r.targetWindow;
|
|
48
|
+
if (!s)
|
|
49
|
+
return;
|
|
50
|
+
let t = 0;
|
|
51
|
+
const n = r.options.useScrollendEvent && w ? () => {
|
|
52
|
+
} : A(
|
|
53
|
+
s,
|
|
54
|
+
() => {
|
|
55
|
+
h(t, !1);
|
|
56
|
+
},
|
|
57
|
+
r.options.isScrollingResetDelay
|
|
58
|
+
), i = (c) => () => {
|
|
59
|
+
const { horizontal: u, isRtl: l } = r.options;
|
|
60
|
+
t = u ? e.scrollLeft * (l && -1 || 1) : e.scrollTop, n(), h(t, c);
|
|
61
|
+
}, o = i(!0), a = i(!1);
|
|
62
|
+
a(), e.addEventListener("scroll", o, M);
|
|
63
|
+
const d = r.options.useScrollendEvent && w;
|
|
64
|
+
return d && e.addEventListener("scrollend", a, M), () => {
|
|
65
|
+
e.removeEventListener("scroll", o), d && e.removeEventListener("scrollend", a);
|
|
66
|
+
};
|
|
67
|
+
}, _ = (r, h, e) => {
|
|
68
|
+
if (h?.borderBoxSize) {
|
|
69
|
+
const s = h.borderBoxSize[0];
|
|
70
|
+
if (s)
|
|
71
|
+
return Math.round(
|
|
72
|
+
s[e.options.horizontal ? "inlineSize" : "blockSize"]
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
return r[e.options.horizontal ? "offsetWidth" : "offsetHeight"];
|
|
76
|
+
}, L = (r, {
|
|
77
|
+
adjustments: h = 0,
|
|
78
|
+
behavior: e
|
|
79
|
+
}, s) => {
|
|
80
|
+
var t, n;
|
|
81
|
+
const i = r + h;
|
|
82
|
+
(n = (t = s.scrollElement) == null ? void 0 : t.scrollTo) == null || n.call(t, {
|
|
83
|
+
[s.options.horizontal ? "left" : "top"]: i,
|
|
84
|
+
behavior: e
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
class T {
|
|
88
|
+
constructor(h) {
|
|
89
|
+
this.unsubs = [], this.scrollElement = null, this.targetWindow = null, this.isScrolling = !1, this.measurementsCache = [], this.itemSizeCache = /* @__PURE__ */ new Map(), this.laneAssignments = /* @__PURE__ */ new Map(), this.pendingMeasuredCacheIndexes = [], this.prevLanes = void 0, this.lanesChangedFlag = !1, this.lanesSettling = !1, this.scrollRect = null, this.scrollOffset = null, this.scrollDirection = null, this.scrollAdjustments = 0, this.elementsCache = /* @__PURE__ */ new Map(), this.observer = /* @__PURE__ */ (() => {
|
|
90
|
+
let e = null;
|
|
91
|
+
const s = () => e || (!this.targetWindow || !this.targetWindow.ResizeObserver ? null : e = new this.targetWindow.ResizeObserver((t) => {
|
|
92
|
+
t.forEach((n) => {
|
|
93
|
+
const i = () => {
|
|
94
|
+
this._measureElement(n.target, n);
|
|
95
|
+
};
|
|
96
|
+
this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(i) : i();
|
|
97
|
+
});
|
|
98
|
+
}));
|
|
99
|
+
return {
|
|
100
|
+
disconnect: () => {
|
|
101
|
+
var t;
|
|
102
|
+
(t = s()) == null || t.disconnect(), e = null;
|
|
103
|
+
},
|
|
104
|
+
observe: (t) => {
|
|
105
|
+
var n;
|
|
106
|
+
return (n = s()) == null ? void 0 : n.observe(t, { box: "border-box" });
|
|
107
|
+
},
|
|
108
|
+
unobserve: (t) => {
|
|
109
|
+
var n;
|
|
110
|
+
return (n = s()) == null ? void 0 : n.unobserve(t);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
})(), this.range = null, this.setOptions = (e) => {
|
|
114
|
+
Object.entries(e).forEach(([s, t]) => {
|
|
115
|
+
typeof t > "u" && delete e[s];
|
|
116
|
+
}), this.options = {
|
|
117
|
+
debug: !1,
|
|
118
|
+
initialOffset: 0,
|
|
119
|
+
overscan: 1,
|
|
120
|
+
paddingStart: 0,
|
|
121
|
+
paddingEnd: 0,
|
|
122
|
+
scrollPaddingStart: 0,
|
|
123
|
+
scrollPaddingEnd: 0,
|
|
124
|
+
horizontal: !1,
|
|
125
|
+
getItemKey: R,
|
|
126
|
+
rangeExtractor: F,
|
|
127
|
+
onChange: () => {
|
|
128
|
+
},
|
|
129
|
+
measureElement: _,
|
|
130
|
+
initialRect: { width: 0, height: 0 },
|
|
131
|
+
scrollMargin: 0,
|
|
132
|
+
gap: 0,
|
|
133
|
+
indexAttribute: "data-index",
|
|
134
|
+
initialMeasurementsCache: [],
|
|
135
|
+
lanes: 1,
|
|
136
|
+
isScrollingResetDelay: 150,
|
|
137
|
+
enabled: !0,
|
|
138
|
+
isRtl: !1,
|
|
139
|
+
useScrollendEvent: !1,
|
|
140
|
+
useAnimationFrameWithResizeObserver: !1,
|
|
141
|
+
...e
|
|
142
|
+
};
|
|
143
|
+
}, this.notify = (e) => {
|
|
144
|
+
var s, t;
|
|
145
|
+
(t = (s = this.options).onChange) == null || t.call(s, this, e);
|
|
146
|
+
}, this.maybeNotify = p(
|
|
147
|
+
() => (this.calculateRange(), [
|
|
148
|
+
this.isScrolling,
|
|
149
|
+
this.range ? this.range.startIndex : null,
|
|
150
|
+
this.range ? this.range.endIndex : null
|
|
151
|
+
]),
|
|
152
|
+
(e) => {
|
|
153
|
+
this.notify(e);
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
key: process.env.NODE_ENV !== "production" && "maybeNotify",
|
|
157
|
+
debug: () => this.options.debug,
|
|
158
|
+
initialDeps: [
|
|
159
|
+
this.isScrolling,
|
|
160
|
+
this.range ? this.range.startIndex : null,
|
|
161
|
+
this.range ? this.range.endIndex : null
|
|
162
|
+
]
|
|
163
|
+
}
|
|
164
|
+
), this.cleanup = () => {
|
|
165
|
+
this.unsubs.filter(Boolean).forEach((e) => e()), this.unsubs = [], this.observer.disconnect(), this.scrollElement = null, this.targetWindow = null;
|
|
166
|
+
}, this._didMount = () => () => {
|
|
167
|
+
this.cleanup();
|
|
168
|
+
}, this._willUpdate = () => {
|
|
169
|
+
var e;
|
|
170
|
+
const s = this.options.enabled ? this.options.getScrollElement() : null;
|
|
171
|
+
if (this.scrollElement !== s) {
|
|
172
|
+
if (this.cleanup(), !s) {
|
|
173
|
+
this.maybeNotify();
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
this.scrollElement = s, this.scrollElement && "ownerDocument" in this.scrollElement ? this.targetWindow = this.scrollElement.ownerDocument.defaultView : this.targetWindow = ((e = this.scrollElement) == null ? void 0 : e.window) ?? null, this.elementsCache.forEach((t) => {
|
|
177
|
+
this.observer.observe(t);
|
|
178
|
+
}), this._scrollToOffset(this.getScrollOffset(), {
|
|
179
|
+
adjustments: void 0,
|
|
180
|
+
behavior: void 0
|
|
181
|
+
}), this.unsubs.push(
|
|
182
|
+
this.options.observeElementRect(this, (t) => {
|
|
183
|
+
this.scrollRect = t, this.maybeNotify();
|
|
184
|
+
})
|
|
185
|
+
), this.unsubs.push(
|
|
186
|
+
this.options.observeElementOffset(this, (t, n) => {
|
|
187
|
+
this.scrollAdjustments = 0, this.scrollDirection = n ? this.getScrollOffset() < t ? "forward" : "backward" : null, this.scrollOffset = t, this.isScrolling = n, this.maybeNotify();
|
|
188
|
+
})
|
|
189
|
+
);
|
|
190
|
+
}
|
|
191
|
+
}, this.getSize = () => this.options.enabled ? (this.scrollRect = this.scrollRect ?? this.options.initialRect, this.scrollRect[this.options.horizontal ? "width" : "height"]) : (this.scrollRect = null, 0), this.getScrollOffset = () => this.options.enabled ? (this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset == "function" ? this.options.initialOffset() : this.options.initialOffset), this.scrollOffset) : (this.scrollOffset = null, 0), this.getFurthestMeasurement = (e, s) => {
|
|
192
|
+
const t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map();
|
|
193
|
+
for (let i = s - 1; i >= 0; i--) {
|
|
194
|
+
const o = e[i];
|
|
195
|
+
if (t.has(o.lane))
|
|
196
|
+
continue;
|
|
197
|
+
const a = n.get(
|
|
198
|
+
o.lane
|
|
199
|
+
);
|
|
200
|
+
if (a == null || o.end > a.end ? n.set(o.lane, o) : o.end < a.end && t.set(o.lane, !0), t.size === this.options.lanes)
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
return n.size === this.options.lanes ? Array.from(n.values()).sort((i, o) => i.end === o.end ? i.index - o.index : i.end - o.end)[0] : void 0;
|
|
204
|
+
}, this.getMeasurementOptions = p(
|
|
205
|
+
() => [
|
|
206
|
+
this.options.count,
|
|
207
|
+
this.options.paddingStart,
|
|
208
|
+
this.options.scrollMargin,
|
|
209
|
+
this.options.getItemKey,
|
|
210
|
+
this.options.enabled,
|
|
211
|
+
this.options.lanes
|
|
212
|
+
],
|
|
213
|
+
(e, s, t, n, i, o) => (this.prevLanes !== void 0 && this.prevLanes !== o && (this.lanesChangedFlag = !0), this.prevLanes = o, this.pendingMeasuredCacheIndexes = [], {
|
|
214
|
+
count: e,
|
|
215
|
+
paddingStart: s,
|
|
216
|
+
scrollMargin: t,
|
|
217
|
+
getItemKey: n,
|
|
218
|
+
enabled: i,
|
|
219
|
+
lanes: o
|
|
220
|
+
}),
|
|
221
|
+
{
|
|
222
|
+
key: !1,
|
|
223
|
+
skipInitialOnChange: !0,
|
|
224
|
+
onChange: () => {
|
|
225
|
+
this.notify(this.isScrolling);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
), this.getMeasurements = p(
|
|
229
|
+
() => [this.getMeasurementOptions(), this.itemSizeCache],
|
|
230
|
+
({ count: e, paddingStart: s, scrollMargin: t, getItemKey: n, enabled: i, lanes: o }, a) => {
|
|
231
|
+
if (!i)
|
|
232
|
+
return this.measurementsCache = [], this.itemSizeCache.clear(), this.laneAssignments.clear(), [];
|
|
233
|
+
if (this.laneAssignments.size > e)
|
|
234
|
+
for (const l of this.laneAssignments.keys())
|
|
235
|
+
l >= e && this.laneAssignments.delete(l);
|
|
236
|
+
this.lanesChangedFlag && (this.lanesChangedFlag = !1, this.lanesSettling = !0, this.measurementsCache = [], this.itemSizeCache.clear(), this.laneAssignments.clear(), this.pendingMeasuredCacheIndexes = []), this.measurementsCache.length === 0 && (this.measurementsCache = this.options.initialMeasurementsCache, this.measurementsCache.forEach((l) => {
|
|
237
|
+
this.itemSizeCache.set(l.key, l.size);
|
|
238
|
+
}));
|
|
239
|
+
const d = this.lanesSettling ? 0 : this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;
|
|
240
|
+
this.pendingMeasuredCacheIndexes = [], this.lanesSettling && this.measurementsCache.length === e && (this.lanesSettling = !1);
|
|
241
|
+
const c = this.measurementsCache.slice(0, d), u = new Array(o).fill(
|
|
242
|
+
void 0
|
|
243
|
+
);
|
|
244
|
+
for (let l = 0; l < d; l++) {
|
|
245
|
+
const f = c[l];
|
|
246
|
+
f && (u[f.lane] = l);
|
|
247
|
+
}
|
|
248
|
+
for (let l = d; l < e; l++) {
|
|
249
|
+
const f = n(l), v = this.laneAssignments.get(l);
|
|
250
|
+
let g, b;
|
|
251
|
+
if (v !== void 0 && this.options.lanes > 1) {
|
|
252
|
+
g = v;
|
|
253
|
+
const m = u[g], x = m !== void 0 ? c[m] : void 0;
|
|
254
|
+
b = x ? x.end + this.options.gap : s + t;
|
|
255
|
+
} else {
|
|
256
|
+
const m = this.options.lanes === 1 ? c[l - 1] : this.getFurthestMeasurement(c, l);
|
|
257
|
+
b = m ? m.end + this.options.gap : s + t, g = m ? m.lane : l % this.options.lanes, this.options.lanes > 1 && this.laneAssignments.set(l, g);
|
|
258
|
+
}
|
|
259
|
+
const S = a.get(f), E = typeof S == "number" ? S : this.options.estimateSize(l), C = b + E;
|
|
260
|
+
c[l] = {
|
|
261
|
+
index: l,
|
|
262
|
+
start: b,
|
|
263
|
+
size: E,
|
|
264
|
+
end: C,
|
|
265
|
+
key: f,
|
|
266
|
+
lane: g
|
|
267
|
+
}, u[g] = l;
|
|
268
|
+
}
|
|
269
|
+
return this.measurementsCache = c, c;
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
key: process.env.NODE_ENV !== "production" && "getMeasurements",
|
|
273
|
+
debug: () => this.options.debug
|
|
274
|
+
}
|
|
275
|
+
), this.calculateRange = p(
|
|
276
|
+
() => [
|
|
277
|
+
this.getMeasurements(),
|
|
278
|
+
this.getSize(),
|
|
279
|
+
this.getScrollOffset(),
|
|
280
|
+
this.options.lanes
|
|
281
|
+
],
|
|
282
|
+
(e, s, t, n) => this.range = e.length > 0 && s > 0 ? N({
|
|
283
|
+
measurements: e,
|
|
284
|
+
outerSize: s,
|
|
285
|
+
scrollOffset: t,
|
|
286
|
+
lanes: n
|
|
287
|
+
}) : null,
|
|
288
|
+
{
|
|
289
|
+
key: process.env.NODE_ENV !== "production" && "calculateRange",
|
|
290
|
+
debug: () => this.options.debug
|
|
291
|
+
}
|
|
292
|
+
), this.getVirtualIndexes = p(
|
|
293
|
+
() => {
|
|
294
|
+
let e = null, s = null;
|
|
295
|
+
const t = this.calculateRange();
|
|
296
|
+
return t && (e = t.startIndex, s = t.endIndex), this.maybeNotify.updateDeps([this.isScrolling, e, s]), [
|
|
297
|
+
this.options.rangeExtractor,
|
|
298
|
+
this.options.overscan,
|
|
299
|
+
this.options.count,
|
|
300
|
+
e,
|
|
301
|
+
s
|
|
302
|
+
];
|
|
303
|
+
},
|
|
304
|
+
(e, s, t, n, i) => n === null || i === null ? [] : e({
|
|
305
|
+
startIndex: n,
|
|
306
|
+
endIndex: i,
|
|
307
|
+
overscan: s,
|
|
308
|
+
count: t
|
|
309
|
+
}),
|
|
310
|
+
{
|
|
311
|
+
key: process.env.NODE_ENV !== "production" && "getVirtualIndexes",
|
|
312
|
+
debug: () => this.options.debug
|
|
313
|
+
}
|
|
314
|
+
), this.indexFromElement = (e) => {
|
|
315
|
+
const s = this.options.indexAttribute, t = e.getAttribute(s);
|
|
316
|
+
return t ? parseInt(t, 10) : (console.warn(
|
|
317
|
+
`Missing attribute name '${s}={index}' on measured element.`
|
|
318
|
+
), -1);
|
|
319
|
+
}, this._measureElement = (e, s) => {
|
|
320
|
+
const t = this.indexFromElement(e), n = this.measurementsCache[t];
|
|
321
|
+
if (!n)
|
|
322
|
+
return;
|
|
323
|
+
const i = n.key, o = this.elementsCache.get(i);
|
|
324
|
+
o !== e && (o && this.observer.unobserve(o), this.observer.observe(e), this.elementsCache.set(i, e)), e.isConnected && this.resizeItem(t, this.options.measureElement(e, s, this));
|
|
325
|
+
}, this.resizeItem = (e, s) => {
|
|
326
|
+
const t = this.measurementsCache[e];
|
|
327
|
+
if (!t)
|
|
328
|
+
return;
|
|
329
|
+
const n = this.itemSizeCache.get(t.key) ?? t.size, i = s - n;
|
|
330
|
+
i !== 0 && ((this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(t, i, this) : t.start < this.getScrollOffset() + this.scrollAdjustments) && (process.env.NODE_ENV !== "production" && this.options.debug && console.info("correction", i), this._scrollToOffset(this.getScrollOffset(), {
|
|
331
|
+
adjustments: this.scrollAdjustments += i,
|
|
332
|
+
behavior: void 0
|
|
333
|
+
})), this.pendingMeasuredCacheIndexes.push(t.index), this.itemSizeCache = new Map(this.itemSizeCache.set(t.key, s)), this.notify(!1));
|
|
334
|
+
}, this.measureElement = (e) => {
|
|
335
|
+
if (!e) {
|
|
336
|
+
this.elementsCache.forEach((s, t) => {
|
|
337
|
+
s.isConnected || (this.observer.unobserve(s), this.elementsCache.delete(t));
|
|
338
|
+
});
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
this._measureElement(e, void 0);
|
|
342
|
+
}, this.getVirtualItems = p(
|
|
343
|
+
() => [this.getVirtualIndexes(), this.getMeasurements()],
|
|
344
|
+
(e, s) => {
|
|
345
|
+
const t = [];
|
|
346
|
+
for (let n = 0, i = e.length; n < i; n++) {
|
|
347
|
+
const o = e[n], a = s[o];
|
|
348
|
+
t.push(a);
|
|
349
|
+
}
|
|
350
|
+
return t;
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
key: process.env.NODE_ENV !== "production" && "getVirtualItems",
|
|
354
|
+
debug: () => this.options.debug
|
|
355
|
+
}
|
|
356
|
+
), this.getVirtualItemForOffset = (e) => {
|
|
357
|
+
const s = this.getMeasurements();
|
|
358
|
+
if (s.length !== 0)
|
|
359
|
+
return O(
|
|
360
|
+
s[z(
|
|
361
|
+
0,
|
|
362
|
+
s.length - 1,
|
|
363
|
+
(t) => O(s[t]).start,
|
|
364
|
+
e
|
|
365
|
+
)]
|
|
366
|
+
);
|
|
367
|
+
}, this.getOffsetForAlignment = (e, s, t = 0) => {
|
|
368
|
+
const n = this.getSize(), i = this.getScrollOffset();
|
|
369
|
+
s === "auto" && (s = e >= i + n ? "end" : "start"), s === "center" ? e += (t - n) / 2 : s === "end" && (e -= n);
|
|
370
|
+
const o = this.getTotalSize() + this.options.scrollMargin - n;
|
|
371
|
+
return Math.max(Math.min(o, e), 0);
|
|
372
|
+
}, this.getOffsetForIndex = (e, s = "auto") => {
|
|
373
|
+
e = Math.max(0, Math.min(e, this.options.count - 1));
|
|
374
|
+
const t = this.measurementsCache[e];
|
|
375
|
+
if (!t)
|
|
376
|
+
return;
|
|
377
|
+
const n = this.getSize(), i = this.getScrollOffset();
|
|
378
|
+
if (s === "auto")
|
|
379
|
+
if (t.end >= i + n - this.options.scrollPaddingEnd)
|
|
380
|
+
s = "end";
|
|
381
|
+
else if (t.start <= i + this.options.scrollPaddingStart)
|
|
382
|
+
s = "start";
|
|
383
|
+
else
|
|
384
|
+
return [i, s];
|
|
385
|
+
const o = s === "end" ? t.end + this.options.scrollPaddingEnd : t.start - this.options.scrollPaddingStart;
|
|
386
|
+
return [
|
|
387
|
+
this.getOffsetForAlignment(o, s, t.size),
|
|
388
|
+
s
|
|
389
|
+
];
|
|
390
|
+
}, this.isDynamicMode = () => this.elementsCache.size > 0, this.scrollToOffset = (e, { align: s = "start", behavior: t } = {}) => {
|
|
391
|
+
t === "smooth" && this.isDynamicMode() && console.warn(
|
|
392
|
+
"The `smooth` scroll behavior is not fully supported with dynamic size."
|
|
393
|
+
), this._scrollToOffset(this.getOffsetForAlignment(e, s), {
|
|
394
|
+
adjustments: void 0,
|
|
395
|
+
behavior: t
|
|
396
|
+
});
|
|
397
|
+
}, this.scrollToIndex = (e, { align: s = "auto", behavior: t } = {}) => {
|
|
398
|
+
t === "smooth" && this.isDynamicMode() && console.warn(
|
|
399
|
+
"The `smooth` scroll behavior is not fully supported with dynamic size."
|
|
400
|
+
), e = Math.max(0, Math.min(e, this.options.count - 1));
|
|
401
|
+
let n = 0;
|
|
402
|
+
const i = 10, o = (d) => {
|
|
403
|
+
if (!this.targetWindow) return;
|
|
404
|
+
const c = this.getOffsetForIndex(e, d);
|
|
405
|
+
if (!c) {
|
|
406
|
+
console.warn("Failed to get offset for index:", e);
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
const [u, l] = c;
|
|
410
|
+
this._scrollToOffset(u, { adjustments: void 0, behavior: t }), this.targetWindow.requestAnimationFrame(() => {
|
|
411
|
+
const f = this.getScrollOffset(), v = this.getOffsetForIndex(e, l);
|
|
412
|
+
if (!v) {
|
|
413
|
+
console.warn("Failed to get offset for index:", e);
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
I(v[0], f) || a(l);
|
|
417
|
+
});
|
|
418
|
+
}, a = (d) => {
|
|
419
|
+
this.targetWindow && (n++, n < i ? (process.env.NODE_ENV !== "production" && this.options.debug && console.info("Schedule retry", n, i), this.targetWindow.requestAnimationFrame(() => o(d))) : console.warn(
|
|
420
|
+
`Failed to scroll to index ${e} after ${i} attempts.`
|
|
421
|
+
));
|
|
422
|
+
};
|
|
423
|
+
o(s);
|
|
424
|
+
}, this.scrollBy = (e, { behavior: s } = {}) => {
|
|
425
|
+
s === "smooth" && this.isDynamicMode() && console.warn(
|
|
426
|
+
"The `smooth` scroll behavior is not fully supported with dynamic size."
|
|
427
|
+
), this._scrollToOffset(this.getScrollOffset() + e, {
|
|
428
|
+
adjustments: void 0,
|
|
429
|
+
behavior: s
|
|
430
|
+
});
|
|
431
|
+
}, this.getTotalSize = () => {
|
|
432
|
+
var e;
|
|
433
|
+
const s = this.getMeasurements();
|
|
434
|
+
let t;
|
|
435
|
+
if (s.length === 0)
|
|
436
|
+
t = this.options.paddingStart;
|
|
437
|
+
else if (this.options.lanes === 1)
|
|
438
|
+
t = ((e = s[s.length - 1]) == null ? void 0 : e.end) ?? 0;
|
|
439
|
+
else {
|
|
440
|
+
const n = Array(this.options.lanes).fill(null);
|
|
441
|
+
let i = s.length - 1;
|
|
442
|
+
for (; i >= 0 && n.some((o) => o === null); ) {
|
|
443
|
+
const o = s[i];
|
|
444
|
+
n[o.lane] === null && (n[o.lane] = o.end), i--;
|
|
445
|
+
}
|
|
446
|
+
t = Math.max(...n.filter((o) => o !== null));
|
|
447
|
+
}
|
|
448
|
+
return Math.max(
|
|
449
|
+
t - this.options.scrollMargin + this.options.paddingEnd,
|
|
450
|
+
0
|
|
451
|
+
);
|
|
452
|
+
}, this._scrollToOffset = (e, {
|
|
453
|
+
adjustments: s,
|
|
454
|
+
behavior: t
|
|
455
|
+
}) => {
|
|
456
|
+
this.options.scrollToFn(e, { behavior: t, adjustments: s }, this);
|
|
457
|
+
}, this.measure = () => {
|
|
458
|
+
this.itemSizeCache = /* @__PURE__ */ new Map(), this.laneAssignments = /* @__PURE__ */ new Map(), this.notify(!1);
|
|
459
|
+
}, this.setOptions(h);
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
const z = (r, h, e, s) => {
|
|
463
|
+
for (; r <= h; ) {
|
|
464
|
+
const t = (r + h) / 2 | 0, n = e(t);
|
|
465
|
+
if (n < s)
|
|
466
|
+
r = t + 1;
|
|
467
|
+
else if (n > s)
|
|
468
|
+
h = t - 1;
|
|
469
|
+
else
|
|
470
|
+
return t;
|
|
471
|
+
}
|
|
472
|
+
return r > 0 ? r - 1 : 0;
|
|
473
|
+
};
|
|
474
|
+
function N({
|
|
475
|
+
measurements: r,
|
|
476
|
+
outerSize: h,
|
|
477
|
+
scrollOffset: e,
|
|
478
|
+
lanes: s
|
|
479
|
+
}) {
|
|
480
|
+
const t = r.length - 1, n = (a) => r[a].start;
|
|
481
|
+
if (r.length <= s)
|
|
482
|
+
return {
|
|
483
|
+
startIndex: 0,
|
|
484
|
+
endIndex: t
|
|
485
|
+
};
|
|
486
|
+
let i = z(
|
|
487
|
+
0,
|
|
488
|
+
t,
|
|
489
|
+
n,
|
|
490
|
+
e
|
|
491
|
+
), o = i;
|
|
492
|
+
if (s === 1)
|
|
493
|
+
for (; o < t && r[o].end < e + h; )
|
|
494
|
+
o++;
|
|
495
|
+
else if (s > 1) {
|
|
496
|
+
const a = Array(s).fill(0);
|
|
497
|
+
for (; o < t && a.some((c) => c < e + h); ) {
|
|
498
|
+
const c = r[o];
|
|
499
|
+
a[c.lane] = c.end, o++;
|
|
500
|
+
}
|
|
501
|
+
const d = Array(s).fill(e + h);
|
|
502
|
+
for (; i >= 0 && d.some((c) => c >= e); ) {
|
|
503
|
+
const c = r[i];
|
|
504
|
+
d[c.lane] = c.start, i--;
|
|
505
|
+
}
|
|
506
|
+
i = Math.max(0, i - i % s), o = Math.min(t, o + (s - 1 - o % s));
|
|
507
|
+
}
|
|
508
|
+
return { startIndex: i, endIndex: o };
|
|
509
|
+
}
|
|
510
|
+
export {
|
|
511
|
+
T as Virtualizer,
|
|
512
|
+
I as approxEqual,
|
|
513
|
+
A as debounce,
|
|
514
|
+
R as defaultKeyExtractor,
|
|
515
|
+
F as defaultRangeExtractor,
|
|
516
|
+
L as elementScroll,
|
|
517
|
+
_ as measureElement,
|
|
518
|
+
p as memo,
|
|
519
|
+
O as notUndefined,
|
|
520
|
+
D as observeElementOffset,
|
|
521
|
+
W as observeElementRect
|
|
522
|
+
};
|
|
523
|
+
//# sourceMappingURL=index111.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index111.js","sources":["../../../node_modules/.pnpm/@tanstack+virtual-core@3.13.13/node_modules/@tanstack/virtual-core/dist/esm/index.js"],"sourcesContent":["import { debounce, memo, notUndefined, approxEqual } from \"./utils.js\";\nconst getRect = (element) => {\n const { offsetWidth, offsetHeight } = element;\n return { width: offsetWidth, height: offsetHeight };\n};\nconst defaultKeyExtractor = (index) => index;\nconst defaultRangeExtractor = (range) => {\n const start = Math.max(range.startIndex - range.overscan, 0);\n const end = Math.min(range.endIndex + range.overscan, range.count - 1);\n const arr = [];\n for (let i = start; i <= end; i++) {\n arr.push(i);\n }\n return arr;\n};\nconst observeElementRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n const handler = (rect) => {\n const { width, height } = rect;\n cb({ width: Math.round(width), height: Math.round(height) });\n };\n handler(getRect(element));\n if (!targetWindow.ResizeObserver) {\n return () => {\n };\n }\n const observer = new targetWindow.ResizeObserver((entries) => {\n const run = () => {\n const entry = entries[0];\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n handler({ width: box.inlineSize, height: box.blockSize });\n return;\n }\n }\n handler(getRect(element));\n };\n instance.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n observer.observe(element, { box: \"border-box\" });\n return () => {\n observer.unobserve(element);\n };\n};\nconst addEventListenerOptions = {\n passive: true\n};\nconst observeWindowRect = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const handler = () => {\n cb({ width: element.innerWidth, height: element.innerHeight });\n };\n handler();\n element.addEventListener(\"resize\", handler, addEventListenerOptions);\n return () => {\n element.removeEventListener(\"resize\", handler);\n };\n};\nconst supportsScrollend = typeof window == \"undefined\" ? true : \"onscrollend\" in window;\nconst observeElementOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n const { horizontal, isRtl } = instance.options;\n offset = horizontal ? element[\"scrollLeft\"] * (isRtl && -1 || 1) : element[\"scrollTop\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n endHandler();\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst observeWindowOffset = (instance, cb) => {\n const element = instance.scrollElement;\n if (!element) {\n return;\n }\n const targetWindow = instance.targetWindow;\n if (!targetWindow) {\n return;\n }\n let offset = 0;\n const fallback = instance.options.useScrollendEvent && supportsScrollend ? () => void 0 : debounce(\n targetWindow,\n () => {\n cb(offset, false);\n },\n instance.options.isScrollingResetDelay\n );\n const createHandler = (isScrolling) => () => {\n offset = element[instance.options.horizontal ? \"scrollX\" : \"scrollY\"];\n fallback();\n cb(offset, isScrolling);\n };\n const handler = createHandler(true);\n const endHandler = createHandler(false);\n endHandler();\n element.addEventListener(\"scroll\", handler, addEventListenerOptions);\n const registerScrollendEvent = instance.options.useScrollendEvent && supportsScrollend;\n if (registerScrollendEvent) {\n element.addEventListener(\"scrollend\", endHandler, addEventListenerOptions);\n }\n return () => {\n element.removeEventListener(\"scroll\", handler);\n if (registerScrollendEvent) {\n element.removeEventListener(\"scrollend\", endHandler);\n }\n };\n};\nconst measureElement = (element, entry, instance) => {\n if (entry == null ? void 0 : entry.borderBoxSize) {\n const box = entry.borderBoxSize[0];\n if (box) {\n const size = Math.round(\n box[instance.options.horizontal ? \"inlineSize\" : \"blockSize\"]\n );\n return size;\n }\n }\n return element[instance.options.horizontal ? \"offsetWidth\" : \"offsetHeight\"];\n};\nconst windowScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nconst elementScroll = (offset, {\n adjustments = 0,\n behavior\n}, instance) => {\n var _a, _b;\n const toOffset = offset + adjustments;\n (_b = (_a = instance.scrollElement) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, {\n [instance.options.horizontal ? \"left\" : \"top\"]: toOffset,\n behavior\n });\n};\nclass Virtualizer {\n constructor(opts) {\n this.unsubs = [];\n this.scrollElement = null;\n this.targetWindow = null;\n this.isScrolling = false;\n this.measurementsCache = [];\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.pendingMeasuredCacheIndexes = [];\n this.prevLanes = void 0;\n this.lanesChangedFlag = false;\n this.lanesSettling = false;\n this.scrollRect = null;\n this.scrollOffset = null;\n this.scrollDirection = null;\n this.scrollAdjustments = 0;\n this.elementsCache = /* @__PURE__ */ new Map();\n this.observer = /* @__PURE__ */ (() => {\n let _ro = null;\n const get = () => {\n if (_ro) {\n return _ro;\n }\n if (!this.targetWindow || !this.targetWindow.ResizeObserver) {\n return null;\n }\n return _ro = new this.targetWindow.ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const run = () => {\n this._measureElement(entry.target, entry);\n };\n this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(run) : run();\n });\n });\n };\n return {\n disconnect: () => {\n var _a;\n (_a = get()) == null ? void 0 : _a.disconnect();\n _ro = null;\n },\n observe: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.observe(target, { box: \"border-box\" });\n },\n unobserve: (target) => {\n var _a;\n return (_a = get()) == null ? void 0 : _a.unobserve(target);\n }\n };\n })();\n this.range = null;\n this.setOptions = (opts2) => {\n Object.entries(opts2).forEach(([key, value]) => {\n if (typeof value === \"undefined\") delete opts2[key];\n });\n this.options = {\n debug: false,\n initialOffset: 0,\n overscan: 1,\n paddingStart: 0,\n paddingEnd: 0,\n scrollPaddingStart: 0,\n scrollPaddingEnd: 0,\n horizontal: false,\n getItemKey: defaultKeyExtractor,\n rangeExtractor: defaultRangeExtractor,\n onChange: () => {\n },\n measureElement,\n initialRect: { width: 0, height: 0 },\n scrollMargin: 0,\n gap: 0,\n indexAttribute: \"data-index\",\n initialMeasurementsCache: [],\n lanes: 1,\n isScrollingResetDelay: 150,\n enabled: true,\n isRtl: false,\n useScrollendEvent: false,\n useAnimationFrameWithResizeObserver: false,\n ...opts2\n };\n };\n this.notify = (sync) => {\n var _a, _b;\n (_b = (_a = this.options).onChange) == null ? void 0 : _b.call(_a, this, sync);\n };\n this.maybeNotify = memo(\n () => {\n this.calculateRange();\n return [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ];\n },\n (isScrolling) => {\n this.notify(isScrolling);\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"maybeNotify\",\n debug: () => this.options.debug,\n initialDeps: [\n this.isScrolling,\n this.range ? this.range.startIndex : null,\n this.range ? this.range.endIndex : null\n ]\n }\n );\n this.cleanup = () => {\n this.unsubs.filter(Boolean).forEach((d) => d());\n this.unsubs = [];\n this.observer.disconnect();\n this.scrollElement = null;\n this.targetWindow = null;\n };\n this._didMount = () => {\n return () => {\n this.cleanup();\n };\n };\n this._willUpdate = () => {\n var _a;\n const scrollElement = this.options.enabled ? this.options.getScrollElement() : null;\n if (this.scrollElement !== scrollElement) {\n this.cleanup();\n if (!scrollElement) {\n this.maybeNotify();\n return;\n }\n this.scrollElement = scrollElement;\n if (this.scrollElement && \"ownerDocument\" in this.scrollElement) {\n this.targetWindow = this.scrollElement.ownerDocument.defaultView;\n } else {\n this.targetWindow = ((_a = this.scrollElement) == null ? void 0 : _a.window) ?? null;\n }\n this.elementsCache.forEach((cached) => {\n this.observer.observe(cached);\n });\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: void 0,\n behavior: void 0\n });\n this.unsubs.push(\n this.options.observeElementRect(this, (rect) => {\n this.scrollRect = rect;\n this.maybeNotify();\n })\n );\n this.unsubs.push(\n this.options.observeElementOffset(this, (offset, isScrolling) => {\n this.scrollAdjustments = 0;\n this.scrollDirection = isScrolling ? this.getScrollOffset() < offset ? \"forward\" : \"backward\" : null;\n this.scrollOffset = offset;\n this.isScrolling = isScrolling;\n this.maybeNotify();\n })\n );\n }\n };\n this.getSize = () => {\n if (!this.options.enabled) {\n this.scrollRect = null;\n return 0;\n }\n this.scrollRect = this.scrollRect ?? this.options.initialRect;\n return this.scrollRect[this.options.horizontal ? \"width\" : \"height\"];\n };\n this.getScrollOffset = () => {\n if (!this.options.enabled) {\n this.scrollOffset = null;\n return 0;\n }\n this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset === \"function\" ? this.options.initialOffset() : this.options.initialOffset);\n return this.scrollOffset;\n };\n this.getFurthestMeasurement = (measurements, index) => {\n const furthestMeasurementsFound = /* @__PURE__ */ new Map();\n const furthestMeasurements = /* @__PURE__ */ new Map();\n for (let m = index - 1; m >= 0; m--) {\n const measurement = measurements[m];\n if (furthestMeasurementsFound.has(measurement.lane)) {\n continue;\n }\n const previousFurthestMeasurement = furthestMeasurements.get(\n measurement.lane\n );\n if (previousFurthestMeasurement == null || measurement.end > previousFurthestMeasurement.end) {\n furthestMeasurements.set(measurement.lane, measurement);\n } else if (measurement.end < previousFurthestMeasurement.end) {\n furthestMeasurementsFound.set(measurement.lane, true);\n }\n if (furthestMeasurementsFound.size === this.options.lanes) {\n break;\n }\n }\n return furthestMeasurements.size === this.options.lanes ? Array.from(furthestMeasurements.values()).sort((a, b) => {\n if (a.end === b.end) {\n return a.index - b.index;\n }\n return a.end - b.end;\n })[0] : void 0;\n };\n this.getMeasurementOptions = memo(\n () => [\n this.options.count,\n this.options.paddingStart,\n this.options.scrollMargin,\n this.options.getItemKey,\n this.options.enabled,\n this.options.lanes\n ],\n (count, paddingStart, scrollMargin, getItemKey, enabled, lanes) => {\n const lanesChanged = this.prevLanes !== void 0 && this.prevLanes !== lanes;\n if (lanesChanged) {\n this.lanesChangedFlag = true;\n }\n this.prevLanes = lanes;\n this.pendingMeasuredCacheIndexes = [];\n return {\n count,\n paddingStart,\n scrollMargin,\n getItemKey,\n enabled,\n lanes\n };\n },\n {\n key: false,\n skipInitialOnChange: true,\n onChange: () => {\n this.notify(this.isScrolling);\n }\n }\n );\n this.getMeasurements = memo(\n () => [this.getMeasurementOptions(), this.itemSizeCache],\n ({ count, paddingStart, scrollMargin, getItemKey, enabled, lanes }, itemSizeCache) => {\n if (!enabled) {\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n return [];\n }\n if (this.laneAssignments.size > count) {\n for (const index of this.laneAssignments.keys()) {\n if (index >= count) {\n this.laneAssignments.delete(index);\n }\n }\n }\n if (this.lanesChangedFlag) {\n this.lanesChangedFlag = false;\n this.lanesSettling = true;\n this.measurementsCache = [];\n this.itemSizeCache.clear();\n this.laneAssignments.clear();\n this.pendingMeasuredCacheIndexes = [];\n }\n if (this.measurementsCache.length === 0) {\n this.measurementsCache = this.options.initialMeasurementsCache;\n this.measurementsCache.forEach((item) => {\n this.itemSizeCache.set(item.key, item.size);\n });\n }\n const min = this.lanesSettling ? 0 : this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;\n this.pendingMeasuredCacheIndexes = [];\n if (this.lanesSettling && this.measurementsCache.length === count) {\n this.lanesSettling = false;\n }\n const measurements = this.measurementsCache.slice(0, min);\n const laneLastIndex = new Array(lanes).fill(\n void 0\n );\n for (let m = 0; m < min; m++) {\n const item = measurements[m];\n if (item) {\n laneLastIndex[item.lane] = m;\n }\n }\n for (let i = min; i < count; i++) {\n const key = getItemKey(i);\n const cachedLane = this.laneAssignments.get(i);\n let lane;\n let start;\n if (cachedLane !== void 0 && this.options.lanes > 1) {\n lane = cachedLane;\n const prevIndex = laneLastIndex[lane];\n const prevInLane = prevIndex !== void 0 ? measurements[prevIndex] : void 0;\n start = prevInLane ? prevInLane.end + this.options.gap : paddingStart + scrollMargin;\n } else {\n const furthestMeasurement = this.options.lanes === 1 ? measurements[i - 1] : this.getFurthestMeasurement(measurements, i);\n start = furthestMeasurement ? furthestMeasurement.end + this.options.gap : paddingStart + scrollMargin;\n lane = furthestMeasurement ? furthestMeasurement.lane : i % this.options.lanes;\n if (this.options.lanes > 1) {\n this.laneAssignments.set(i, lane);\n }\n }\n const measuredSize = itemSizeCache.get(key);\n const size = typeof measuredSize === \"number\" ? measuredSize : this.options.estimateSize(i);\n const end = start + size;\n measurements[i] = {\n index: i,\n start,\n size,\n end,\n key,\n lane\n };\n laneLastIndex[lane] = i;\n }\n this.measurementsCache = measurements;\n return measurements;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getMeasurements\",\n debug: () => this.options.debug\n }\n );\n this.calculateRange = memo(\n () => [\n this.getMeasurements(),\n this.getSize(),\n this.getScrollOffset(),\n this.options.lanes\n ],\n (measurements, outerSize, scrollOffset, lanes) => {\n return this.range = measurements.length > 0 && outerSize > 0 ? calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n }) : null;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"calculateRange\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualIndexes = memo(\n () => {\n let startIndex = null;\n let endIndex = null;\n const range = this.calculateRange();\n if (range) {\n startIndex = range.startIndex;\n endIndex = range.endIndex;\n }\n this.maybeNotify.updateDeps([this.isScrolling, startIndex, endIndex]);\n return [\n this.options.rangeExtractor,\n this.options.overscan,\n this.options.count,\n startIndex,\n endIndex\n ];\n },\n (rangeExtractor, overscan, count, startIndex, endIndex) => {\n return startIndex === null || endIndex === null ? [] : rangeExtractor({\n startIndex,\n endIndex,\n overscan,\n count\n });\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualIndexes\",\n debug: () => this.options.debug\n }\n );\n this.indexFromElement = (node) => {\n const attributeName = this.options.indexAttribute;\n const indexStr = node.getAttribute(attributeName);\n if (!indexStr) {\n console.warn(\n `Missing attribute name '${attributeName}={index}' on measured element.`\n );\n return -1;\n }\n return parseInt(indexStr, 10);\n };\n this._measureElement = (node, entry) => {\n const index = this.indexFromElement(node);\n const item = this.measurementsCache[index];\n if (!item) {\n return;\n }\n const key = item.key;\n const prevNode = this.elementsCache.get(key);\n if (prevNode !== node) {\n if (prevNode) {\n this.observer.unobserve(prevNode);\n }\n this.observer.observe(node);\n this.elementsCache.set(key, node);\n }\n if (node.isConnected) {\n this.resizeItem(index, this.options.measureElement(node, entry, this));\n }\n };\n this.resizeItem = (index, size) => {\n const item = this.measurementsCache[index];\n if (!item) {\n return;\n }\n const itemSize = this.itemSizeCache.get(item.key) ?? item.size;\n const delta = size - itemSize;\n if (delta !== 0) {\n if (this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(item, delta, this) : item.start < this.getScrollOffset() + this.scrollAdjustments) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"correction\", delta);\n }\n this._scrollToOffset(this.getScrollOffset(), {\n adjustments: this.scrollAdjustments += delta,\n behavior: void 0\n });\n }\n this.pendingMeasuredCacheIndexes.push(item.index);\n this.itemSizeCache = new Map(this.itemSizeCache.set(item.key, size));\n this.notify(false);\n }\n };\n this.measureElement = (node) => {\n if (!node) {\n this.elementsCache.forEach((cached, key) => {\n if (!cached.isConnected) {\n this.observer.unobserve(cached);\n this.elementsCache.delete(key);\n }\n });\n return;\n }\n this._measureElement(node, void 0);\n };\n this.getVirtualItems = memo(\n () => [this.getVirtualIndexes(), this.getMeasurements()],\n (indexes, measurements) => {\n const virtualItems = [];\n for (let k = 0, len = indexes.length; k < len; k++) {\n const i = indexes[k];\n const measurement = measurements[i];\n virtualItems.push(measurement);\n }\n return virtualItems;\n },\n {\n key: process.env.NODE_ENV !== \"production\" && \"getVirtualItems\",\n debug: () => this.options.debug\n }\n );\n this.getVirtualItemForOffset = (offset) => {\n const measurements = this.getMeasurements();\n if (measurements.length === 0) {\n return void 0;\n }\n return notUndefined(\n measurements[findNearestBinarySearch(\n 0,\n measurements.length - 1,\n (index) => notUndefined(measurements[index]).start,\n offset\n )]\n );\n };\n this.getOffsetForAlignment = (toOffset, align, itemSize = 0) => {\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n align = toOffset >= scrollOffset + size ? \"end\" : \"start\";\n }\n if (align === \"center\") {\n toOffset += (itemSize - size) / 2;\n } else if (align === \"end\") {\n toOffset -= size;\n }\n const maxOffset = this.getTotalSize() + this.options.scrollMargin - size;\n return Math.max(Math.min(maxOffset, toOffset), 0);\n };\n this.getOffsetForIndex = (index, align = \"auto\") => {\n index = Math.max(0, Math.min(index, this.options.count - 1));\n const item = this.measurementsCache[index];\n if (!item) {\n return void 0;\n }\n const size = this.getSize();\n const scrollOffset = this.getScrollOffset();\n if (align === \"auto\") {\n if (item.end >= scrollOffset + size - this.options.scrollPaddingEnd) {\n align = \"end\";\n } else if (item.start <= scrollOffset + this.options.scrollPaddingStart) {\n align = \"start\";\n } else {\n return [scrollOffset, align];\n }\n }\n const toOffset = align === \"end\" ? item.end + this.options.scrollPaddingEnd : item.start - this.options.scrollPaddingStart;\n return [\n this.getOffsetForAlignment(toOffset, align, item.size),\n align\n ];\n };\n this.isDynamicMode = () => this.elementsCache.size > 0;\n this.scrollToOffset = (toOffset, { align = \"start\", behavior } = {}) => {\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n this._scrollToOffset(this.getOffsetForAlignment(toOffset, align), {\n adjustments: void 0,\n behavior\n });\n };\n this.scrollToIndex = (index, { align: initialAlign = \"auto\", behavior } = {}) => {\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n index = Math.max(0, Math.min(index, this.options.count - 1));\n let attempts = 0;\n const maxAttempts = 10;\n const tryScroll = (currentAlign) => {\n if (!this.targetWindow) return;\n const offsetInfo = this.getOffsetForIndex(index, currentAlign);\n if (!offsetInfo) {\n console.warn(\"Failed to get offset for index:\", index);\n return;\n }\n const [offset, align] = offsetInfo;\n this._scrollToOffset(offset, { adjustments: void 0, behavior });\n this.targetWindow.requestAnimationFrame(() => {\n const currentOffset = this.getScrollOffset();\n const afterInfo = this.getOffsetForIndex(index, align);\n if (!afterInfo) {\n console.warn(\"Failed to get offset for index:\", index);\n return;\n }\n if (!approxEqual(afterInfo[0], currentOffset)) {\n scheduleRetry(align);\n }\n });\n };\n const scheduleRetry = (align) => {\n if (!this.targetWindow) return;\n attempts++;\n if (attempts < maxAttempts) {\n if (process.env.NODE_ENV !== \"production\" && this.options.debug) {\n console.info(\"Schedule retry\", attempts, maxAttempts);\n }\n this.targetWindow.requestAnimationFrame(() => tryScroll(align));\n } else {\n console.warn(\n `Failed to scroll to index ${index} after ${maxAttempts} attempts.`\n );\n }\n };\n tryScroll(initialAlign);\n };\n this.scrollBy = (delta, { behavior } = {}) => {\n if (behavior === \"smooth\" && this.isDynamicMode()) {\n console.warn(\n \"The `smooth` scroll behavior is not fully supported with dynamic size.\"\n );\n }\n this._scrollToOffset(this.getScrollOffset() + delta, {\n adjustments: void 0,\n behavior\n });\n };\n this.getTotalSize = () => {\n var _a;\n const measurements = this.getMeasurements();\n let end;\n if (measurements.length === 0) {\n end = this.options.paddingStart;\n } else if (this.options.lanes === 1) {\n end = ((_a = measurements[measurements.length - 1]) == null ? void 0 : _a.end) ?? 0;\n } else {\n const endByLane = Array(this.options.lanes).fill(null);\n let endIndex = measurements.length - 1;\n while (endIndex >= 0 && endByLane.some((val) => val === null)) {\n const item = measurements[endIndex];\n if (endByLane[item.lane] === null) {\n endByLane[item.lane] = item.end;\n }\n endIndex--;\n }\n end = Math.max(...endByLane.filter((val) => val !== null));\n }\n return Math.max(\n end - this.options.scrollMargin + this.options.paddingEnd,\n 0\n );\n };\n this._scrollToOffset = (offset, {\n adjustments,\n behavior\n }) => {\n this.options.scrollToFn(offset, { behavior, adjustments }, this);\n };\n this.measure = () => {\n this.itemSizeCache = /* @__PURE__ */ new Map();\n this.laneAssignments = /* @__PURE__ */ new Map();\n this.notify(false);\n };\n this.setOptions(opts);\n }\n}\nconst findNearestBinarySearch = (low, high, getCurrentValue, value) => {\n while (low <= high) {\n const middle = (low + high) / 2 | 0;\n const currentValue = getCurrentValue(middle);\n if (currentValue < value) {\n low = middle + 1;\n } else if (currentValue > value) {\n high = middle - 1;\n } else {\n return middle;\n }\n }\n if (low > 0) {\n return low - 1;\n } else {\n return 0;\n }\n};\nfunction calculateRange({\n measurements,\n outerSize,\n scrollOffset,\n lanes\n}) {\n const lastIndex = measurements.length - 1;\n const getOffset = (index) => measurements[index].start;\n if (measurements.length <= lanes) {\n return {\n startIndex: 0,\n endIndex: lastIndex\n };\n }\n let startIndex = findNearestBinarySearch(\n 0,\n lastIndex,\n getOffset,\n scrollOffset\n );\n let endIndex = startIndex;\n if (lanes === 1) {\n while (endIndex < lastIndex && measurements[endIndex].end < scrollOffset + outerSize) {\n endIndex++;\n }\n } else if (lanes > 1) {\n const endPerLane = Array(lanes).fill(0);\n while (endIndex < lastIndex && endPerLane.some((pos) => pos < scrollOffset + outerSize)) {\n const item = measurements[endIndex];\n endPerLane[item.lane] = item.end;\n endIndex++;\n }\n const startPerLane = Array(lanes).fill(scrollOffset + outerSize);\n while (startIndex >= 0 && startPerLane.some((pos) => pos >= scrollOffset)) {\n const item = measurements[startIndex];\n startPerLane[item.lane] = item.start;\n startIndex--;\n }\n startIndex = Math.max(0, startIndex - startIndex % lanes);\n endIndex = Math.min(lastIndex, endIndex + (lanes - 1 - endIndex % lanes));\n }\n return { startIndex, endIndex };\n}\nexport {\n Virtualizer,\n approxEqual,\n debounce,\n defaultKeyExtractor,\n defaultRangeExtractor,\n elementScroll,\n measureElement,\n memo,\n notUndefined,\n observeElementOffset,\n observeElementRect,\n observeWindowOffset,\n observeWindowRect,\n windowScroll\n};\n//# sourceMappingURL=index.js.map\n"],"names":["getRect","element","offsetWidth","offsetHeight","defaultKeyExtractor","index","defaultRangeExtractor","range","start","end","arr","i","observeElementRect","instance","cb","targetWindow","handler","rect","width","height","observer","entries","run","entry","box","addEventListenerOptions","supportsScrollend","observeElementOffset","offset","fallback","debounce","createHandler","isScrolling","horizontal","isRtl","endHandler","registerScrollendEvent","measureElement","elementScroll","adjustments","behavior","_a","_b","toOffset","Virtualizer","opts","_ro","get","target","opts2","key","value","sync","memo","d","scrollElement","cached","measurements","furthestMeasurementsFound","furthestMeasurements","m","measurement","previousFurthestMeasurement","a","b","count","paddingStart","scrollMargin","getItemKey","enabled","lanes","itemSizeCache","item","min","laneLastIndex","cachedLane","lane","prevIndex","prevInLane","furthestMeasurement","measuredSize","size","outerSize","scrollOffset","calculateRange","startIndex","endIndex","rangeExtractor","overscan","node","attributeName","indexStr","prevNode","itemSize","delta","indexes","virtualItems","k","len","notUndefined","findNearestBinarySearch","align","maxOffset","initialAlign","attempts","maxAttempts","tryScroll","currentAlign","offsetInfo","currentOffset","afterInfo","approxEqual","scheduleRetry","endByLane","val","low","high","getCurrentValue","middle","currentValue","lastIndex","getOffset","endPerLane","pos","startPerLane"],"mappings":"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","x_google_ignoreList":[0]}
|