@praxisjs/composables 1.2.0 → 1.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/browser.d.ts +41 -18
  3. package/dist/browser.d.ts.map +1 -1
  4. package/dist/browser.js +114 -112
  5. package/dist/browser.js.map +1 -1
  6. package/dist/dom.d.ts +24 -16
  7. package/dist/dom.d.ts.map +1 -1
  8. package/dist/dom.js +75 -78
  9. package/dist/dom.js.map +1 -1
  10. package/dist/list.d.ts +4 -1
  11. package/dist/list.d.ts.map +1 -1
  12. package/dist/list.js +29 -11
  13. package/dist/list.js.map +1 -1
  14. package/dist/upload.d.ts.map +1 -1
  15. package/dist/upload.js +32 -12
  16. package/dist/upload.js.map +1 -1
  17. package/dist/utilities.d.ts +13 -1
  18. package/dist/utilities.d.ts.map +1 -1
  19. package/dist/utilities.js +88 -26
  20. package/dist/utilities.js.map +1 -1
  21. package/package.json +14 -5
  22. package/src/browser.ts +129 -113
  23. package/src/dom.ts +77 -79
  24. package/src/list.ts +29 -10
  25. package/src/upload.ts +30 -11
  26. package/src/utilities.ts +101 -24
  27. package/dist/__tests__/browser.test.d.ts +0 -2
  28. package/dist/__tests__/browser.test.d.ts.map +0 -1
  29. package/dist/__tests__/browser.test.js +0 -333
  30. package/dist/__tests__/browser.test.js.map +0 -1
  31. package/dist/__tests__/dom.test.d.ts +0 -2
  32. package/dist/__tests__/dom.test.d.ts.map +0 -1
  33. package/dist/__tests__/dom.test.js +0 -416
  34. package/dist/__tests__/dom.test.js.map +0 -1
  35. package/dist/__tests__/list.test.d.ts +0 -2
  36. package/dist/__tests__/list.test.d.ts.map +0 -1
  37. package/dist/__tests__/list.test.js +0 -156
  38. package/dist/__tests__/list.test.js.map +0 -1
  39. package/dist/__tests__/upload.test.d.ts +0 -2
  40. package/dist/__tests__/upload.test.d.ts.map +0 -1
  41. package/dist/__tests__/upload.test.js +0 -531
  42. package/dist/__tests__/upload.test.js.map +0 -1
  43. package/dist/__tests__/utilities.test.d.ts +0 -2
  44. package/dist/__tests__/utilities.test.d.ts.map +0 -1
  45. package/dist/__tests__/utilities.test.js +0 -251
  46. package/dist/__tests__/utilities.test.js.map +0 -1
  47. package/src/__tests__/browser.test.ts +0 -395
  48. package/src/__tests__/dom.test.ts +0 -515
  49. package/src/__tests__/list.test.ts +0 -210
  50. package/src/__tests__/upload.test.ts +0 -639
  51. package/src/__tests__/utilities.test.ts +0 -327
  52. package/tsconfig.json +0 -8
@@ -1,416 +0,0 @@
1
- // @vitest-environment jsdom
2
- import { describe, it, expect, vi, beforeEach } from "vitest";
3
- import { WindowSize, ScrollPosition, ElementSize, Intersection, Focus } from "../dom";
4
- // ── WindowSize ────────────────────────────────────────────────────────────────
5
- describe("WindowSize", () => {
6
- it("reads initial window dimensions", () => {
7
- Object.defineProperty(window, "innerWidth", { value: 1024, configurable: true });
8
- Object.defineProperty(window, "innerHeight", { value: 768, configurable: true });
9
- const ws = new WindowSize();
10
- const { width, height } = ws.setup();
11
- expect(width()).toBe(1024);
12
- expect(height()).toBe(768);
13
- });
14
- it("updates on resize event", () => {
15
- Object.defineProperty(window, "innerWidth", { value: 800, configurable: true });
16
- Object.defineProperty(window, "innerHeight", { value: 600, configurable: true });
17
- const ws = new WindowSize();
18
- const { width, height } = ws.setup();
19
- Object.defineProperty(window, "innerWidth", { value: 1280, configurable: true });
20
- Object.defineProperty(window, "innerHeight", { value: 900, configurable: true });
21
- window.dispatchEvent(new Event("resize"));
22
- expect(width()).toBe(1280);
23
- expect(height()).toBe(900);
24
- });
25
- it("removes listener on unmount", () => {
26
- const remove = vi.spyOn(window, "removeEventListener");
27
- const ws = new WindowSize();
28
- ws.setup();
29
- ws.onUnmount();
30
- expect(remove).toHaveBeenCalledWith("resize", expect.any(Function));
31
- });
32
- });
33
- // ── ScrollPosition ────────────────────────────────────────────────────────────
34
- describe("ScrollPosition", () => {
35
- it("starts at (0, 0)", () => {
36
- const sp = new ScrollPosition(window);
37
- const { x, y } = sp.setup();
38
- expect(x()).toBe(0);
39
- expect(y()).toBe(0);
40
- });
41
- it("updates on scroll event for window", () => {
42
- const sp = new ScrollPosition(window);
43
- const { x, y } = sp.setup();
44
- sp.onMount();
45
- Object.defineProperty(window, "scrollX", { value: 100, configurable: true });
46
- Object.defineProperty(window, "scrollY", { value: 200, configurable: true });
47
- window.dispatchEvent(new Event("scroll"));
48
- expect(x()).toBe(100);
49
- expect(y()).toBe(200);
50
- });
51
- it("updates on scroll event for element", () => {
52
- const el = document.createElement("div");
53
- const sp = new ScrollPosition(el);
54
- const { x, y } = sp.setup();
55
- sp.onMount();
56
- Object.defineProperty(el, "scrollLeft", { value: 50, configurable: true });
57
- Object.defineProperty(el, "scrollTop", { value: 75, configurable: true });
58
- el.dispatchEvent(new Event("scroll"));
59
- expect(x()).toBe(50);
60
- expect(y()).toBe(75);
61
- });
62
- it("removes listener on unmount", () => {
63
- const el = document.createElement("div");
64
- const remove = vi.spyOn(el, "removeEventListener");
65
- const sp = new ScrollPosition(el);
66
- sp.setup();
67
- sp.onMount();
68
- sp.onUnmount();
69
- expect(remove).toHaveBeenCalledWith("scroll", expect.any(Function));
70
- });
71
- });
72
- // ── ElementSize ───────────────────────────────────────────────────────────────
73
- describe("ElementSize", () => {
74
- let observerCallback;
75
- beforeEach(() => {
76
- vi.stubGlobal("ResizeObserver", class {
77
- constructor(cb) { observerCallback = cb; }
78
- observe = vi.fn();
79
- disconnect = vi.fn();
80
- });
81
- });
82
- it("starts at (0, 0) with no element", () => {
83
- const ref = { current: null };
84
- const es = new ElementSize(ref);
85
- const { width, height } = es.setup();
86
- expect(width()).toBe(0);
87
- expect(height()).toBe(0);
88
- });
89
- it("updates via ResizeObserver callback", () => {
90
- const el = document.createElement("div");
91
- const ref = { current: el };
92
- const es = new ElementSize(ref);
93
- const { width, height } = es.setup();
94
- observerCallback([{ contentRect: { width: 300, height: 150 } }], {});
95
- expect(width()).toBe(300);
96
- expect(height()).toBe(150);
97
- });
98
- it("disconnects observer on unmount", () => {
99
- const disconnect = vi.fn();
100
- vi.stubGlobal("ResizeObserver", class {
101
- constructor(cb) { observerCallback = cb; }
102
- observe = vi.fn();
103
- disconnect = disconnect;
104
- });
105
- const ref = { current: null };
106
- const es = new ElementSize(ref);
107
- es.setup();
108
- es.onUnmount();
109
- expect(disconnect).toHaveBeenCalled();
110
- });
111
- it("onMount() with null ref is a no-op", () => {
112
- const ref = { current: null };
113
- const es = new ElementSize(ref);
114
- es.setup();
115
- expect(() => es.onMount()).not.toThrow();
116
- });
117
- });
118
- // ── Intersection ──────────────────────────────────────────────────────────────
119
- describe("Intersection", () => {
120
- let observerCallback;
121
- beforeEach(() => {
122
- vi.stubGlobal("IntersectionObserver", class {
123
- constructor(cb) { observerCallback = cb; }
124
- observe = vi.fn();
125
- disconnect = vi.fn();
126
- });
127
- });
128
- it("starts as not visible", () => {
129
- const ref = { current: null };
130
- const int = new Intersection(ref);
131
- const { visible } = int.setup();
132
- expect(visible()).toBe(false);
133
- });
134
- it("becomes visible when intersecting", () => {
135
- const el = document.createElement("div");
136
- const ref = { current: el };
137
- const int = new Intersection(ref);
138
- const { visible } = int.setup();
139
- observerCallback([{ isIntersecting: true }], {});
140
- expect(visible()).toBe(true);
141
- });
142
- it("disconnects on unmount", () => {
143
- const disconnect = vi.fn();
144
- vi.stubGlobal("IntersectionObserver", class {
145
- constructor(cb) { observerCallback = cb; }
146
- observe = vi.fn();
147
- disconnect = disconnect;
148
- });
149
- const ref = { current: null };
150
- const int = new Intersection(ref);
151
- int.setup();
152
- int.onUnmount();
153
- expect(disconnect).toHaveBeenCalled();
154
- });
155
- it("onMount() calls observe() with the element", () => {
156
- const observeFn = vi.fn();
157
- vi.stubGlobal("IntersectionObserver", class {
158
- constructor(cb) { observerCallback = cb; }
159
- observe = observeFn;
160
- disconnect = vi.fn();
161
- });
162
- const el = document.createElement("div");
163
- const ref = { current: el };
164
- const int = new Intersection(ref);
165
- int.setup();
166
- int.onMount();
167
- expect(observeFn).toHaveBeenCalledWith(el);
168
- });
169
- it("onMount() does nothing when ref is null", () => {
170
- const observeFn = vi.fn();
171
- vi.stubGlobal("IntersectionObserver", class {
172
- constructor(cb) { observerCallback = cb; }
173
- observe = observeFn;
174
- disconnect = vi.fn();
175
- });
176
- const ref = { current: null };
177
- const int = new Intersection(ref);
178
- int.setup();
179
- expect(() => int.onMount()).not.toThrow();
180
- expect(observeFn).not.toHaveBeenCalled();
181
- });
182
- });
183
- // ── ElementSize (additional) ──────────────────────────────────────────────────
184
- describe("ElementSize (additional)", () => {
185
- it("ref.current changes to a new element: old observer is disconnected and new one started", () => {
186
- const disconnectFn = vi.fn();
187
- const observeFn = vi.fn();
188
- vi.stubGlobal("ResizeObserver", class {
189
- observe = observeFn;
190
- disconnect = disconnectFn;
191
- });
192
- const el1 = document.createElement("div");
193
- const ref = { current: el1 };
194
- const es = new ElementSize(ref);
195
- es.setup();
196
- es.onMount();
197
- // Disconnect old observer and create new one for el2
198
- es.onUnmount();
199
- expect(disconnectFn).toHaveBeenCalled();
200
- const el2 = document.createElement("div");
201
- ref.current = el2;
202
- const es2 = new ElementSize(ref);
203
- es2.setup();
204
- es2.onMount();
205
- expect(observeFn).toHaveBeenCalledWith(el2);
206
- });
207
- });
208
- // ── Intersection (additional) ─────────────────────────────────────────────────
209
- describe("Intersection (additional)", () => {
210
- let observerCallback;
211
- beforeEach(() => {
212
- vi.stubGlobal("IntersectionObserver", class {
213
- constructor(cb) { observerCallback = cb; }
214
- observe = vi.fn();
215
- disconnect = vi.fn();
216
- });
217
- });
218
- it("visibility toggles false after being true", () => {
219
- const el = document.createElement("div");
220
- const ref = { current: el };
221
- const int = new Intersection(ref);
222
- const { visible } = int.setup();
223
- observerCallback([{ isIntersecting: true }], {});
224
- expect(visible()).toBe(true);
225
- observerCallback([{ isIntersecting: false }], {});
226
- expect(visible()).toBe(false);
227
- });
228
- });
229
- // ── ScrollPosition (ref-based) ────────────────────────────────────────────────
230
- describe("ScrollPosition (ref-based)", () => {
231
- it("accepts a ref object and reads scrollLeft/scrollTop from it", () => {
232
- const el = document.createElement("div");
233
- const ref = { current: el };
234
- const sp = new ScrollPosition(ref);
235
- const { x, y } = sp.setup();
236
- sp.onMount();
237
- Object.defineProperty(el, "scrollLeft", { value: 30, configurable: true });
238
- Object.defineProperty(el, "scrollTop", { value: 60, configurable: true });
239
- el.dispatchEvent(new Event("scroll"));
240
- expect(x()).toBe(30);
241
- expect(y()).toBe(60);
242
- });
243
- it("uses ref.current at mount time — subsequent current changes do not affect the listener target", () => {
244
- const el = document.createElement("div");
245
- const ref = { current: el };
246
- const sp = new ScrollPosition(ref);
247
- sp.setup();
248
- sp.onMount();
249
- const remove = vi.spyOn(el, "removeEventListener");
250
- sp.onUnmount();
251
- expect(remove).toHaveBeenCalledWith("scroll", expect.any(Function));
252
- });
253
- it("falls back to window when ref.current is null at mount time", () => {
254
- const ref = { current: null };
255
- const sp = new ScrollPosition(ref);
256
- sp.setup();
257
- // Should not throw; _target falls back to window
258
- expect(() => sp.onMount()).not.toThrow();
259
- sp.onUnmount();
260
- });
261
- });
262
- // ── ScrollPosition (additional) ───────────────────────────────────────────────
263
- describe("ScrollPosition (additional)", () => {
264
- it("onMount() called twice registers only one scroll listener", () => {
265
- const el = document.createElement("div");
266
- const add = vi.spyOn(el, "addEventListener");
267
- const sp = new ScrollPosition(el);
268
- sp.setup();
269
- sp.onMount();
270
- sp.onMount(); // second call must be a no-op
271
- const scrollCalls = add.mock.calls.filter((c) => c[0] === "scroll").length;
272
- expect(scrollCalls).toBe(1);
273
- });
274
- });
275
- // ── Focus ─────────────────────────────────────────────────────────────────────
276
- describe("Focus", () => {
277
- it("starts as not focused", () => {
278
- const el = document.createElement("input");
279
- const ref = { current: el };
280
- const focus = new Focus(ref);
281
- const { focused } = focus.setup();
282
- expect(focused()).toBe(false);
283
- });
284
- it("sets focused=true on focus event", () => {
285
- const el = document.createElement("input");
286
- document.body.appendChild(el);
287
- const ref = { current: el };
288
- const focus = new Focus(ref);
289
- const { focused } = focus.setup();
290
- focus.onMount();
291
- el.dispatchEvent(new Event("focus"));
292
- expect(focused()).toBe(true);
293
- document.body.removeChild(el);
294
- });
295
- it("sets focused=false on blur event", () => {
296
- const el = document.createElement("input");
297
- document.body.appendChild(el);
298
- const ref = { current: el };
299
- const focus = new Focus(ref);
300
- const { focused } = focus.setup();
301
- focus.onMount();
302
- el.dispatchEvent(new Event("focus"));
303
- el.dispatchEvent(new Event("blur"));
304
- expect(focused()).toBe(false);
305
- document.body.removeChild(el);
306
- });
307
- it("does not throw when ref is null", () => {
308
- const ref = { current: null };
309
- const focus = new Focus(ref);
310
- expect(() => focus.setup()).not.toThrow();
311
- });
312
- it("onMount() with null ref is a no-op", () => {
313
- const ref = { current: null };
314
- const focus = new Focus(ref);
315
- focus.setup();
316
- expect(() => focus.onMount()).not.toThrow();
317
- });
318
- it("onUnmount() with null ref is a no-op", () => {
319
- const ref = { current: null };
320
- const focus = new Focus(ref);
321
- focus.setup();
322
- expect(() => focus.onUnmount()).not.toThrow();
323
- });
324
- it("removes focus/blur listeners on unmount", () => {
325
- const el = document.createElement("input");
326
- document.body.appendChild(el);
327
- const ref = { current: el };
328
- const focus = new Focus(ref);
329
- focus.setup();
330
- focus.onMount();
331
- const remove = vi.spyOn(el, "removeEventListener");
332
- focus.onUnmount();
333
- expect(remove).toHaveBeenCalledWith("focus", expect.any(Function));
334
- expect(remove).toHaveBeenCalledWith("blur", expect.any(Function));
335
- document.body.removeChild(el);
336
- });
337
- it("onMount() called twice registers only one listener pair", () => {
338
- const el = document.createElement("input");
339
- document.body.appendChild(el);
340
- const add = vi.spyOn(el, "addEventListener");
341
- const ref = { current: el };
342
- const focus = new Focus(ref);
343
- focus.setup();
344
- focus.onMount();
345
- focus.onMount(); // second call must be a no-op
346
- const focusCalls = add.mock.calls.filter((c) => c[0] === "focus").length;
347
- expect(focusCalls).toBe(1);
348
- document.body.removeChild(el);
349
- });
350
- });
351
- // ── WindowSize (additional) ───────────────────────────────────────────────────
352
- describe("WindowSize (additional)", () => {
353
- it("setup() called twice returns the same view object", () => {
354
- const ws = new WindowSize();
355
- const view1 = ws.setup();
356
- const view2 = ws.setup();
357
- expect(view1).toBe(view2);
358
- ws.onUnmount();
359
- });
360
- it("setup() called twice registers only one resize listener", () => {
361
- const add = vi.spyOn(window, "addEventListener");
362
- const ws = new WindowSize();
363
- ws.setup();
364
- ws.setup();
365
- const resizeCalls = add.mock.calls.filter((c) => c[0] === "resize").length;
366
- expect(resizeCalls).toBe(1);
367
- ws.onUnmount();
368
- vi.restoreAllMocks();
369
- });
370
- });
371
- // ── ElementSize (cache) ───────────────────────────────────────────────────────
372
- describe("ElementSize (cache)", () => {
373
- it("setup() called twice returns the same view object", () => {
374
- const el = document.createElement("div");
375
- document.body.appendChild(el);
376
- const ref = { current: el };
377
- const es = new ElementSize(ref);
378
- const view1 = es.setup();
379
- const view2 = es.setup();
380
- expect(view1).toBe(view2);
381
- es.onUnmount();
382
- document.body.removeChild(el);
383
- });
384
- });
385
- // ── Intersection (cache) ──────────────────────────────────────────────────────
386
- describe("Intersection (cache)", () => {
387
- it("setup() called twice returns the same view object", () => {
388
- const el = document.createElement("div");
389
- document.body.appendChild(el);
390
- const ref = { current: el };
391
- const inter = new Intersection(ref);
392
- const view1 = inter.setup();
393
- const view2 = inter.setup();
394
- expect(view1).toBe(view2);
395
- inter.onUnmount();
396
- document.body.removeChild(el);
397
- });
398
- });
399
- // ── ScrollPosition (_staticTarget ?? window fallback) ─────────────────────────
400
- describe("ScrollPosition (_staticTarget fallback)", () => {
401
- it("falls back to window when _staticTarget is undefined", () => {
402
- // Default constructor sets _staticTarget = window. After construction we
403
- // forcibly clear it to undefined (bypassing TypeScript's `private readonly`)
404
- // so _resolveTarget() exercises the final `return window` branch.
405
- const sp = new ScrollPosition();
406
- sp._staticTarget = undefined;
407
- sp.setup();
408
- const addSpy = vi.spyOn(window, "addEventListener");
409
- sp.onMount();
410
- const scrollCall = addSpy.mock.calls.find((c) => c[0] === "scroll");
411
- expect(scrollCall).toBeDefined(); // proves _resolveTarget() hit the window fallback
412
- addSpy.mockRestore();
413
- sp.onUnmount();
414
- });
415
- });
416
- //# sourceMappingURL=dom.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dom.test.js","sourceRoot":"","sources":["../../src/__tests__/dom.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=list.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/list.test.ts"],"names":[],"mappings":""}
@@ -1,156 +0,0 @@
1
- // @vitest-environment jsdom
2
- import { describe, it, expect, vi } from "vitest";
3
- import { signal } from "@praxisjs/core/internal";
4
- // Import from index to cover re-exports
5
- import { VirtualList } from "../index";
6
- function makeItems(count) {
7
- return Array.from({ length: count }, (_, i) => ({ id: i }));
8
- }
9
- // ── VirtualList ───────────────────────────────────────────────────────────────
10
- describe("VirtualList", () => {
11
- const ITEM_HEIGHT = 50;
12
- const VIEW_HEIGHT = 600;
13
- const BUFFER = 3;
14
- it("setup() returns computed signals for all four properties", () => {
15
- const ref = { current: null };
16
- const vl = new VirtualList(ref, () => makeItems(10), ITEM_HEIGHT);
17
- const view = vl.setup();
18
- expect(typeof view.visibleItems).toBe("function");
19
- expect(typeof view.totalHeight).toBe("function");
20
- expect(typeof view.offsetTop).toBe("function");
21
- expect(typeof view.offsetBottom).toBe("function");
22
- });
23
- it("totalHeight = items.length * itemHeight", () => {
24
- const ref = { current: null };
25
- const vl = new VirtualList(ref, () => makeItems(100), ITEM_HEIGHT);
26
- const { totalHeight } = vl.setup();
27
- expect(totalHeight()).toBe(100 * ITEM_HEIGHT);
28
- });
29
- it("offsetTop = 0 when scrolled to top", () => {
30
- const ref = { current: null };
31
- const vl = new VirtualList(ref, () => makeItems(100), ITEM_HEIGHT);
32
- const { offsetTop } = vl.setup();
33
- expect(offsetTop()).toBe(0);
34
- });
35
- it("visibleItems starts at index 0 with buffer window", () => {
36
- const ref = { current: null };
37
- // default viewHeight=600, buffer=3, scrollTop=0
38
- // startIdx = max(0, floor(0/50) - 3) = 0
39
- // endIdx = min(99, ceil((0+600)/50) + 3) = min(99, 12+3) = 15
40
- const vl = new VirtualList(ref, () => makeItems(100), ITEM_HEIGHT, BUFFER);
41
- const { visibleItems } = vl.setup();
42
- const items = visibleItems();
43
- expect(items[0].index).toBe(0);
44
- expect(items[items.length - 1].index).toBe(15);
45
- });
46
- it("visibleItems contains the correct item references", () => {
47
- const source = makeItems(20);
48
- const ref = { current: null };
49
- const vl = new VirtualList(ref, () => source, ITEM_HEIGHT, 0);
50
- const { visibleItems } = vl.setup();
51
- const items = visibleItems();
52
- expect(items[0].item).toBe(source[0]);
53
- expect(items[0].index).toBe(0);
54
- });
55
- it("offsetBottom reflects the hidden rows below the window", () => {
56
- const ref = { current: null };
57
- // startIdx=0, endIdx=15, total=100
58
- // offsetBottom = max(0, 100-1-15) * 50 = 84 * 50 = 4200
59
- const vl = new VirtualList(ref, () => makeItems(100), ITEM_HEIGHT, BUFFER);
60
- const { offsetBottom } = vl.setup();
61
- expect(offsetBottom()).toBe((100 - 1 - 15) * ITEM_HEIGHT);
62
- });
63
- it("empty list: all offsets are 0 and visibleItems is empty", () => {
64
- const ref = { current: null };
65
- const vl = new VirtualList(ref, () => [], ITEM_HEIGHT);
66
- const { visibleItems, totalHeight, offsetTop, offsetBottom } = vl.setup();
67
- expect(visibleItems()).toHaveLength(0);
68
- expect(totalHeight()).toBe(0);
69
- expect(offsetTop()).toBe(0);
70
- expect(offsetBottom()).toBe(0);
71
- });
72
- });
73
- // ── VirtualList — onMount ─────────────────────────────────────────────────────
74
- describe("VirtualList — onMount", () => {
75
- const ITEM_HEIGHT = 50;
76
- it("onMount() with null ref is a no-op", () => {
77
- const ref = { current: null };
78
- const vl = new VirtualList(ref, () => makeItems(10), ITEM_HEIGHT);
79
- vl.setup();
80
- expect(() => vl.onMount()).not.toThrow();
81
- });
82
- it("onMount() sets viewHeight from container's clientHeight when > 0", () => {
83
- const el = document.createElement("div");
84
- Object.defineProperty(el, "clientHeight", { value: 400, configurable: true });
85
- const ref = { current: el };
86
- const vl = new VirtualList(ref, () => makeItems(100), ITEM_HEIGHT, 0);
87
- const { visibleItems } = vl.setup();
88
- vl.onMount();
89
- // With viewHeight=400 and no buffer: endIdx = min(99, ceil(400/50)-1) = 7
90
- // Visible range [0..7] = 8 items
91
- const items = visibleItems();
92
- expect(items.length).toBeLessThan(100);
93
- expect(items.length).toBeGreaterThan(0);
94
- // Specifically: ceil((0+400)/50) + 0 = 8; min(99, 8) = 8 → indices 0..8 = 9 items
95
- expect(items[items.length - 1].index).toBe(8);
96
- });
97
- it("onMount() does not override default viewHeight when clientHeight is 0", () => {
98
- const el = document.createElement("div");
99
- Object.defineProperty(el, "clientHeight", { value: 0, configurable: true });
100
- const ref = { current: el };
101
- const vl = new VirtualList(ref, () => makeItems(100), ITEM_HEIGHT, 0);
102
- const { visibleItems } = vl.setup();
103
- vl.onMount();
104
- // Default viewHeight=600 preserved; endIdx = min(99, ceil(600/50)) = 12
105
- const items = visibleItems();
106
- expect(items[items.length - 1].index).toBe(12);
107
- });
108
- it("onMount() registers a scroll listener that updates the window", () => {
109
- const el = document.createElement("div");
110
- Object.defineProperty(el, "clientHeight", { value: 0, configurable: true });
111
- const ref = { current: el };
112
- const vl = new VirtualList(ref, () => makeItems(100), ITEM_HEIGHT, 0);
113
- const { offsetTop } = vl.setup();
114
- vl.onMount();
115
- expect(offsetTop()).toBe(0);
116
- Object.defineProperty(el, "scrollTop", { value: 500, configurable: true });
117
- el.dispatchEvent(new Event("scroll"));
118
- // scrollTop=500, buffer=0: startIdx = floor(500/50) = 10; offsetTop = 10*50 = 500
119
- expect(offsetTop()).toBe(500);
120
- });
121
- });
122
- // ── VirtualList — onUnmount ───────────────────────────────────────────────────
123
- describe("VirtualList — onUnmount", () => {
124
- const ITEM_HEIGHT = 50;
125
- it("onUnmount() removes the scroll listener", () => {
126
- const el = document.createElement("div");
127
- const remove = vi.spyOn(el, "removeEventListener");
128
- const ref = { current: el };
129
- const vl = new VirtualList(ref, () => makeItems(50), ITEM_HEIGHT);
130
- vl.setup();
131
- vl.onMount();
132
- vl.onUnmount();
133
- expect(remove).toHaveBeenCalledWith("scroll", expect.any(Function));
134
- });
135
- it("onUnmount() without prior onMount() does not throw", () => {
136
- const ref = { current: null };
137
- const vl = new VirtualList(ref, () => makeItems(10), ITEM_HEIGHT);
138
- vl.setup();
139
- expect(() => vl.onUnmount()).not.toThrow();
140
- });
141
- });
142
- // ── VirtualList — reactive getItems ──────────────────────────────────────────
143
- describe("VirtualList — reactive getItems", () => {
144
- it("visibleItems updates when the source signal changes", () => {
145
- const itemsSignal = signal(makeItems(5));
146
- const ref = { current: null };
147
- const vl = new VirtualList(ref, () => itemsSignal(), 50);
148
- const { visibleItems, totalHeight } = vl.setup();
149
- expect(totalHeight()).toBe(250);
150
- expect(visibleItems()).toHaveLength(5);
151
- itemsSignal.set(makeItems(10));
152
- expect(totalHeight()).toBe(500);
153
- expect(visibleItems()).toHaveLength(10);
154
- });
155
- });
156
- //# sourceMappingURL=list.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.test.js","sourceRoot":"","sources":["../../src/__tests__/list.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=upload.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"upload.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/upload.test.ts"],"names":[],"mappings":""}