@caspeco/casper-ui-library 7.7.5 → 7.9.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.
@@ -0,0 +1,497 @@
1
+ import { memo as f, notUndefined as v, approxEqual as M, debounce as z } from "./utils.js";
2
+ const b = (r) => {
3
+ const { offsetWidth: a, offsetHeight: e } = r;
4
+ return { width: a, height: e };
5
+ }, w = (r) => r, I = (r) => {
6
+ const a = Math.max(r.startIndex - r.overscan, 0), e = Math.min(r.endIndex + r.overscan, r.count - 1), s = [];
7
+ for (let t = a; t <= e; t++)
8
+ s.push(t);
9
+ return s;
10
+ }, A = (r, a) => {
11
+ const e = r.scrollElement;
12
+ if (!e)
13
+ return;
14
+ const s = r.targetWindow;
15
+ if (!s)
16
+ return;
17
+ const t = (n) => {
18
+ const { width: o, height: h } = n;
19
+ a({ width: Math.round(o), height: Math.round(h) });
20
+ };
21
+ if (t(b(e)), !s.ResizeObserver)
22
+ return () => {
23
+ };
24
+ const i = new s.ResizeObserver((n) => {
25
+ const o = () => {
26
+ const h = n[0];
27
+ if (h?.borderBoxSize) {
28
+ const c = h.borderBoxSize[0];
29
+ if (c) {
30
+ t({ width: c.inlineSize, height: c.blockSize });
31
+ return;
32
+ }
33
+ }
34
+ t(b(e));
35
+ };
36
+ r.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(o) : o();
37
+ });
38
+ return i.observe(e, { box: "border-box" }), () => {
39
+ i.unobserve(e);
40
+ };
41
+ }, E = {
42
+ passive: !0
43
+ }, S = typeof window > "u" ? !0 : "onscrollend" in window, F = (r, a) => {
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 i = r.options.useScrollendEvent && S ? () => {
52
+ } : z(
53
+ s,
54
+ () => {
55
+ a(t, !1);
56
+ },
57
+ r.options.isScrollingResetDelay
58
+ ), n = (l) => () => {
59
+ const { horizontal: d, isRtl: u } = r.options;
60
+ t = d ? e.scrollLeft * (u && -1 || 1) : e.scrollTop, i(), a(t, l);
61
+ }, o = n(!0), h = n(!1);
62
+ h(), e.addEventListener("scroll", o, E);
63
+ const c = r.options.useScrollendEvent && S;
64
+ return c && e.addEventListener("scrollend", h, E), () => {
65
+ e.removeEventListener("scroll", o), c && e.removeEventListener("scrollend", h);
66
+ };
67
+ }, C = (r, a, e) => {
68
+ if (a?.borderBoxSize) {
69
+ const s = a.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
+ }, N = (r, {
77
+ adjustments: a = 0,
78
+ behavior: e
79
+ }, s) => {
80
+ var t, i;
81
+ const n = r + a;
82
+ (i = (t = s.scrollElement) == null ? void 0 : t.scrollTo) == null || i.call(t, {
83
+ [s.options.horizontal ? "left" : "top"]: n,
84
+ behavior: e
85
+ });
86
+ };
87
+ class W {
88
+ constructor(a) {
89
+ this.unsubs = [], this.scrollElement = null, this.targetWindow = null, this.isScrolling = !1, this.measurementsCache = [], this.itemSizeCache = /* @__PURE__ */ new Map(), this.pendingMeasuredCacheIndexes = [], 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((i) => {
93
+ const n = () => {
94
+ this._measureElement(i.target, i);
95
+ };
96
+ this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(n) : n();
97
+ });
98
+ }));
99
+ return {
100
+ disconnect: () => {
101
+ var t;
102
+ (t = s()) == null || t.disconnect(), e = null;
103
+ },
104
+ observe: (t) => {
105
+ var i;
106
+ return (i = s()) == null ? void 0 : i.observe(t, { box: "border-box" });
107
+ },
108
+ unobserve: (t) => {
109
+ var i;
110
+ return (i = s()) == null ? void 0 : i.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: w,
126
+ rangeExtractor: I,
127
+ onChange: () => {
128
+ },
129
+ measureElement: C,
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 = f(
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, i) => {
187
+ this.scrollAdjustments = 0, this.scrollDirection = i ? this.getScrollOffset() < t ? "forward" : "backward" : null, this.scrollOffset = t, this.isScrolling = i, 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(), i = /* @__PURE__ */ new Map();
193
+ for (let n = s - 1; n >= 0; n--) {
194
+ const o = e[n];
195
+ if (t.has(o.lane))
196
+ continue;
197
+ const h = i.get(
198
+ o.lane
199
+ );
200
+ if (h == null || o.end > h.end ? i.set(o.lane, o) : o.end < h.end && t.set(o.lane, !0), t.size === this.options.lanes)
201
+ break;
202
+ }
203
+ return i.size === this.options.lanes ? Array.from(i.values()).sort((n, o) => n.end === o.end ? n.index - o.index : n.end - o.end)[0] : void 0;
204
+ }, this.getMeasurementOptions = f(
205
+ () => [
206
+ this.options.count,
207
+ this.options.paddingStart,
208
+ this.options.scrollMargin,
209
+ this.options.getItemKey,
210
+ this.options.enabled
211
+ ],
212
+ (e, s, t, i, n) => (this.pendingMeasuredCacheIndexes = [], {
213
+ count: e,
214
+ paddingStart: s,
215
+ scrollMargin: t,
216
+ getItemKey: i,
217
+ enabled: n
218
+ }),
219
+ {
220
+ key: !1
221
+ }
222
+ ), this.getMeasurements = f(
223
+ () => [this.getMeasurementOptions(), this.itemSizeCache],
224
+ ({ count: e, paddingStart: s, scrollMargin: t, getItemKey: i, enabled: n }, o) => {
225
+ if (!n)
226
+ return this.measurementsCache = [], this.itemSizeCache.clear(), [];
227
+ this.measurementsCache.length === 0 && (this.measurementsCache = this.options.initialMeasurementsCache, this.measurementsCache.forEach((l) => {
228
+ this.itemSizeCache.set(l.key, l.size);
229
+ }));
230
+ const h = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;
231
+ this.pendingMeasuredCacheIndexes = [];
232
+ const c = this.measurementsCache.slice(0, h);
233
+ for (let l = h; l < e; l++) {
234
+ const d = i(l), u = this.options.lanes === 1 ? c[l - 1] : this.getFurthestMeasurement(c, l), g = u ? u.end + this.options.gap : s + t, m = o.get(d), p = typeof m == "number" ? m : this.options.estimateSize(l), O = g + p, y = u ? u.lane : l % this.options.lanes;
235
+ c[l] = {
236
+ index: l,
237
+ start: g,
238
+ size: p,
239
+ end: O,
240
+ key: d,
241
+ lane: y
242
+ };
243
+ }
244
+ return this.measurementsCache = c, c;
245
+ },
246
+ {
247
+ key: process.env.NODE_ENV !== "production" && "getMeasurements",
248
+ debug: () => this.options.debug
249
+ }
250
+ ), this.calculateRange = f(
251
+ () => [
252
+ this.getMeasurements(),
253
+ this.getSize(),
254
+ this.getScrollOffset(),
255
+ this.options.lanes
256
+ ],
257
+ (e, s, t, i) => this.range = e.length > 0 && s > 0 ? R({
258
+ measurements: e,
259
+ outerSize: s,
260
+ scrollOffset: t,
261
+ lanes: i
262
+ }) : null,
263
+ {
264
+ key: process.env.NODE_ENV !== "production" && "calculateRange",
265
+ debug: () => this.options.debug
266
+ }
267
+ ), this.getVirtualIndexes = f(
268
+ () => {
269
+ let e = null, s = null;
270
+ const t = this.calculateRange();
271
+ return t && (e = t.startIndex, s = t.endIndex), this.maybeNotify.updateDeps([this.isScrolling, e, s]), [
272
+ this.options.rangeExtractor,
273
+ this.options.overscan,
274
+ this.options.count,
275
+ e,
276
+ s
277
+ ];
278
+ },
279
+ (e, s, t, i, n) => i === null || n === null ? [] : e({
280
+ startIndex: i,
281
+ endIndex: n,
282
+ overscan: s,
283
+ count: t
284
+ }),
285
+ {
286
+ key: process.env.NODE_ENV !== "production" && "getVirtualIndexes",
287
+ debug: () => this.options.debug
288
+ }
289
+ ), this.indexFromElement = (e) => {
290
+ const s = this.options.indexAttribute, t = e.getAttribute(s);
291
+ return t ? parseInt(t, 10) : (console.warn(
292
+ `Missing attribute name '${s}={index}' on measured element.`
293
+ ), -1);
294
+ }, this._measureElement = (e, s) => {
295
+ const t = this.indexFromElement(e), i = this.measurementsCache[t];
296
+ if (!i)
297
+ return;
298
+ const n = i.key, o = this.elementsCache.get(n);
299
+ o !== e && (o && this.observer.unobserve(o), this.observer.observe(e), this.elementsCache.set(n, e)), e.isConnected && this.resizeItem(t, this.options.measureElement(e, s, this));
300
+ }, this.resizeItem = (e, s) => {
301
+ const t = this.measurementsCache[e];
302
+ if (!t)
303
+ return;
304
+ const i = this.itemSizeCache.get(t.key) ?? t.size, n = s - i;
305
+ n !== 0 && ((this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(t, n, this) : t.start < this.getScrollOffset() + this.scrollAdjustments) && (process.env.NODE_ENV !== "production" && this.options.debug && console.info("correction", n), this._scrollToOffset(this.getScrollOffset(), {
306
+ adjustments: this.scrollAdjustments += n,
307
+ behavior: void 0
308
+ })), this.pendingMeasuredCacheIndexes.push(t.index), this.itemSizeCache = new Map(this.itemSizeCache.set(t.key, s)), this.notify(!1));
309
+ }, this.measureElement = (e) => {
310
+ if (!e) {
311
+ this.elementsCache.forEach((s, t) => {
312
+ s.isConnected || (this.observer.unobserve(s), this.elementsCache.delete(t));
313
+ });
314
+ return;
315
+ }
316
+ this._measureElement(e, void 0);
317
+ }, this.getVirtualItems = f(
318
+ () => [this.getVirtualIndexes(), this.getMeasurements()],
319
+ (e, s) => {
320
+ const t = [];
321
+ for (let i = 0, n = e.length; i < n; i++) {
322
+ const o = e[i], h = s[o];
323
+ t.push(h);
324
+ }
325
+ return t;
326
+ },
327
+ {
328
+ key: process.env.NODE_ENV !== "production" && "getVirtualItems",
329
+ debug: () => this.options.debug
330
+ }
331
+ ), this.getVirtualItemForOffset = (e) => {
332
+ const s = this.getMeasurements();
333
+ if (s.length !== 0)
334
+ return v(
335
+ s[x(
336
+ 0,
337
+ s.length - 1,
338
+ (t) => v(s[t]).start,
339
+ e
340
+ )]
341
+ );
342
+ }, this.getOffsetForAlignment = (e, s, t = 0) => {
343
+ const i = this.getSize(), n = this.getScrollOffset();
344
+ s === "auto" && (s = e >= n + i ? "end" : "start"), s === "center" ? e += (t - i) / 2 : s === "end" && (e -= i);
345
+ const o = this.getTotalSize() + this.options.scrollMargin - i;
346
+ return Math.max(Math.min(o, e), 0);
347
+ }, this.getOffsetForIndex = (e, s = "auto") => {
348
+ e = Math.max(0, Math.min(e, this.options.count - 1));
349
+ const t = this.measurementsCache[e];
350
+ if (!t)
351
+ return;
352
+ const i = this.getSize(), n = this.getScrollOffset();
353
+ if (s === "auto")
354
+ if (t.end >= n + i - this.options.scrollPaddingEnd)
355
+ s = "end";
356
+ else if (t.start <= n + this.options.scrollPaddingStart)
357
+ s = "start";
358
+ else
359
+ return [n, s];
360
+ const o = s === "end" ? t.end + this.options.scrollPaddingEnd : t.start - this.options.scrollPaddingStart;
361
+ return [
362
+ this.getOffsetForAlignment(o, s, t.size),
363
+ s
364
+ ];
365
+ }, this.isDynamicMode = () => this.elementsCache.size > 0, this.scrollToOffset = (e, { align: s = "start", behavior: t } = {}) => {
366
+ t === "smooth" && this.isDynamicMode() && console.warn(
367
+ "The `smooth` scroll behavior is not fully supported with dynamic size."
368
+ ), this._scrollToOffset(this.getOffsetForAlignment(e, s), {
369
+ adjustments: void 0,
370
+ behavior: t
371
+ });
372
+ }, this.scrollToIndex = (e, { align: s = "auto", behavior: t } = {}) => {
373
+ t === "smooth" && this.isDynamicMode() && console.warn(
374
+ "The `smooth` scroll behavior is not fully supported with dynamic size."
375
+ ), e = Math.max(0, Math.min(e, this.options.count - 1));
376
+ let i = 0;
377
+ const n = 10, o = (c) => {
378
+ if (!this.targetWindow) return;
379
+ const l = this.getOffsetForIndex(e, c);
380
+ if (!l) {
381
+ console.warn("Failed to get offset for index:", e);
382
+ return;
383
+ }
384
+ const [d, u] = l;
385
+ this._scrollToOffset(d, { adjustments: void 0, behavior: t }), this.targetWindow.requestAnimationFrame(() => {
386
+ const g = this.getScrollOffset(), m = this.getOffsetForIndex(e, u);
387
+ if (!m) {
388
+ console.warn("Failed to get offset for index:", e);
389
+ return;
390
+ }
391
+ M(m[0], g) || h(u);
392
+ });
393
+ }, h = (c) => {
394
+ this.targetWindow && (i++, i < n ? (process.env.NODE_ENV !== "production" && this.options.debug && console.info("Schedule retry", i, n), this.targetWindow.requestAnimationFrame(() => o(c))) : console.warn(
395
+ `Failed to scroll to index ${e} after ${n} attempts.`
396
+ ));
397
+ };
398
+ o(s);
399
+ }, this.scrollBy = (e, { behavior: s } = {}) => {
400
+ s === "smooth" && this.isDynamicMode() && console.warn(
401
+ "The `smooth` scroll behavior is not fully supported with dynamic size."
402
+ ), this._scrollToOffset(this.getScrollOffset() + e, {
403
+ adjustments: void 0,
404
+ behavior: s
405
+ });
406
+ }, this.getTotalSize = () => {
407
+ var e;
408
+ const s = this.getMeasurements();
409
+ let t;
410
+ if (s.length === 0)
411
+ t = this.options.paddingStart;
412
+ else if (this.options.lanes === 1)
413
+ t = ((e = s[s.length - 1]) == null ? void 0 : e.end) ?? 0;
414
+ else {
415
+ const i = Array(this.options.lanes).fill(null);
416
+ let n = s.length - 1;
417
+ for (; n >= 0 && i.some((o) => o === null); ) {
418
+ const o = s[n];
419
+ i[o.lane] === null && (i[o.lane] = o.end), n--;
420
+ }
421
+ t = Math.max(...i.filter((o) => o !== null));
422
+ }
423
+ return Math.max(
424
+ t - this.options.scrollMargin + this.options.paddingEnd,
425
+ 0
426
+ );
427
+ }, this._scrollToOffset = (e, {
428
+ adjustments: s,
429
+ behavior: t
430
+ }) => {
431
+ this.options.scrollToFn(e, { behavior: t, adjustments: s }, this);
432
+ }, this.measure = () => {
433
+ this.itemSizeCache = /* @__PURE__ */ new Map(), this.notify(!1);
434
+ }, this.setOptions(a);
435
+ }
436
+ }
437
+ const x = (r, a, e, s) => {
438
+ for (; r <= a; ) {
439
+ const t = (r + a) / 2 | 0, i = e(t);
440
+ if (i < s)
441
+ r = t + 1;
442
+ else if (i > s)
443
+ a = t - 1;
444
+ else
445
+ return t;
446
+ }
447
+ return r > 0 ? r - 1 : 0;
448
+ };
449
+ function R({
450
+ measurements: r,
451
+ outerSize: a,
452
+ scrollOffset: e,
453
+ lanes: s
454
+ }) {
455
+ const t = r.length - 1, i = (h) => r[h].start;
456
+ if (r.length <= s)
457
+ return {
458
+ startIndex: 0,
459
+ endIndex: t
460
+ };
461
+ let n = x(
462
+ 0,
463
+ t,
464
+ i,
465
+ e
466
+ ), o = n;
467
+ if (s === 1)
468
+ for (; o < t && r[o].end < e + a; )
469
+ o++;
470
+ else if (s > 1) {
471
+ const h = Array(s).fill(0);
472
+ for (; o < t && h.some((l) => l < e + a); ) {
473
+ const l = r[o];
474
+ h[l.lane] = l.end, o++;
475
+ }
476
+ const c = Array(s).fill(e + a);
477
+ for (; n >= 0 && c.some((l) => l >= e); ) {
478
+ const l = r[n];
479
+ c[l.lane] = l.start, n--;
480
+ }
481
+ n = Math.max(0, n - n % s), o = Math.min(t, o + (s - 1 - o % s));
482
+ }
483
+ return { startIndex: n, endIndex: o };
484
+ }
485
+ export {
486
+ W as Virtualizer,
487
+ M as approxEqual,
488
+ z as debounce,
489
+ w as defaultKeyExtractor,
490
+ I as defaultRangeExtractor,
491
+ N as elementScroll,
492
+ C as measureElement,
493
+ f as memo,
494
+ v as notUndefined,
495
+ F as observeElementOffset,
496
+ A as observeElementRect
497
+ };
@@ -0,0 +1,52 @@
1
+ function T(n, i, e) {
2
+ let l = e.initialDeps ?? [], t;
3
+ function r() {
4
+ var o, m, h, f;
5
+ let g;
6
+ e.key && ((o = e.debug) != null && o.call(e)) && (g = Date.now());
7
+ const u = n();
8
+ if (!(u.length !== l.length || u.some((c, a) => l[a] !== c)))
9
+ return t;
10
+ l = u;
11
+ let s;
12
+ if (e.key && ((m = e.debug) != null && m.call(e)) && (s = Date.now()), t = i(...u), e.key && ((h = e.debug) != null && h.call(e))) {
13
+ const c = Math.round((Date.now() - g) * 100) / 100, a = Math.round((Date.now() - s) * 100) / 100, b = a / 16, w = (d, v) => {
14
+ for (d = String(d); d.length < v; )
15
+ d = " " + d;
16
+ return d;
17
+ };
18
+ console.info(
19
+ `%c⏱ ${w(a, 5)} /${w(c, 5)} ms`,
20
+ `
21
+ font-size: .6rem;
22
+ font-weight: bold;
23
+ color: hsl(${Math.max(
24
+ 0,
25
+ Math.min(120 - 120 * b, 120)
26
+ )}deg 100% 31%);`,
27
+ e?.key
28
+ );
29
+ }
30
+ return (f = e?.onChange) == null || f.call(e, t), t;
31
+ }
32
+ return r.updateDeps = (o) => {
33
+ l = o;
34
+ }, r;
35
+ }
36
+ function y(n, i) {
37
+ if (n === void 0)
38
+ throw new Error("Unexpected undefined");
39
+ return n;
40
+ }
41
+ const M = (n, i) => Math.abs(n - i) < 1.01, k = (n, i, e) => {
42
+ let l;
43
+ return function(...t) {
44
+ n.clearTimeout(l), l = n.setTimeout(() => i.apply(this, t), e);
45
+ };
46
+ };
47
+ export {
48
+ M as approxEqual,
49
+ k as debounce,
50
+ T as memo,
51
+ y as notUndefined
52
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caspeco/casper-ui-library",
3
- "version": "7.7.5",
3
+ "version": "7.9.0",
4
4
  "prettier": "@caspeco/prettier-config",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -46,11 +46,11 @@
46
46
  "jsdom": "^27.2.0",
47
47
  "tsc-alias": "^1.8.16",
48
48
  "typescript": "~5.9.3",
49
- "typescript-eslint": "^8.48.0",
50
- "vite": "^7.2.4",
49
+ "typescript-eslint": "^8.48.1",
50
+ "vite": "^7.2.6",
51
51
  "vite-plugin-dts": "^4.5.4",
52
52
  "vite-tsconfig-paths": "^5.1.4",
53
- "vitest": "^4.0.14"
53
+ "vitest": "^4.0.15"
54
54
  },
55
55
  "peerDependencies": {
56
56
  "@chakra-ui/react": "^2.8.2",
@@ -62,6 +62,7 @@
62
62
  "@chakra-ui/anatomy": "^2.3.4",
63
63
  "@floating-ui/dom": "^1.7.4",
64
64
  "@tanstack/react-table": "^8.21.3",
65
+ "@tanstack/react-virtual": "^3.13.12",
65
66
  "csstype": "^3.2.3",
66
67
  "date-fns": "^4.1.0"
67
68
  }