@praxisjs/composables 0.1.5 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,167 +1,331 @@
1
1
  // @vitest-environment jsdom
2
- import { beforeEach, afterEach, describe, it, expect, vi } from "vitest";
3
- import { createRef, useWindowSize, useScrollPosition, useFocus, useElementSize, useIntersection } from "../dom";
4
- // ---------- createRef ----------
5
- describe("createRef", () => {
6
- it("starts with current = null", () => {
7
- const ref = createRef();
8
- expect(ref.current).toBeNull();
9
- });
10
- it("can be assigned an element", () => {
11
- const ref = createRef();
12
- const el = document.createElement("div");
13
- ref.current = el;
14
- expect(ref.current).toBe(el);
15
- });
16
- });
17
- // ---------- useWindowSize ----------
18
- describe("useWindowSize", () => {
19
- it("returns the current window dimensions", () => {
20
- Object.defineProperty(window, "innerWidth", { writable: true, configurable: true, value: 1024 });
21
- Object.defineProperty(window, "innerHeight", { writable: true, configurable: true, value: 768 });
22
- const { width, height } = useWindowSize();
2
+ import { describe, it, expect, vi, beforeEach } from "vitest";
3
+ import { signal } from "@praxisjs/core/internal";
4
+ import { WindowSize, ScrollPosition, ElementSize, Intersection, Focus } from "../dom";
5
+ // ── WindowSize ────────────────────────────────────────────────────────────────
6
+ describe("WindowSize", () => {
7
+ it("reads initial window dimensions", () => {
8
+ Object.defineProperty(window, "innerWidth", { value: 1024, configurable: true });
9
+ Object.defineProperty(window, "innerHeight", { value: 768, configurable: true });
10
+ const ws = new WindowSize();
11
+ const { width, height } = ws.setup();
23
12
  expect(width()).toBe(1024);
24
13
  expect(height()).toBe(768);
25
14
  });
26
15
  it("updates on resize event", () => {
27
- Object.defineProperty(window, "innerWidth", { writable: true, configurable: true, value: 800 });
28
- Object.defineProperty(window, "innerHeight", { writable: true, configurable: true, value: 600 });
29
- const { width, height } = useWindowSize();
30
- Object.defineProperty(window, "innerWidth", { writable: true, configurable: true, value: 1280 });
31
- Object.defineProperty(window, "innerHeight", { writable: true, configurable: true, value: 720 });
16
+ Object.defineProperty(window, "innerWidth", { value: 800, configurable: true });
17
+ Object.defineProperty(window, "innerHeight", { value: 600, configurable: true });
18
+ const ws = new WindowSize();
19
+ const { width, height } = ws.setup();
20
+ Object.defineProperty(window, "innerWidth", { value: 1280, configurable: true });
21
+ Object.defineProperty(window, "innerHeight", { value: 900, configurable: true });
32
22
  window.dispatchEvent(new Event("resize"));
33
23
  expect(width()).toBe(1280);
34
- expect(height()).toBe(720);
24
+ expect(height()).toBe(900);
25
+ });
26
+ it("removes listener on unmount", () => {
27
+ const remove = vi.spyOn(window, "removeEventListener");
28
+ const ws = new WindowSize();
29
+ ws.setup();
30
+ ws.onUnmount();
31
+ expect(remove).toHaveBeenCalledWith("resize", expect.any(Function));
35
32
  });
36
33
  });
37
- // ---------- useScrollPosition ----------
38
- describe("useScrollPosition", () => {
34
+ // ── ScrollPosition ────────────────────────────────────────────────────────────
35
+ describe("ScrollPosition", () => {
39
36
  it("starts at (0, 0)", () => {
40
- const { x, y } = useScrollPosition(window);
37
+ const sp = new ScrollPosition(window);
38
+ const { x, y } = sp.setup();
41
39
  expect(x()).toBe(0);
42
40
  expect(y()).toBe(0);
43
41
  });
44
- it("updates on element scroll", () => {
42
+ it("updates on scroll event for window", () => {
43
+ const sp = new ScrollPosition(window);
44
+ const { x, y } = sp.setup();
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", () => {
45
52
  const el = document.createElement("div");
46
- const { x, y } = useScrollPosition(el);
47
- Object.defineProperty(el, "scrollLeft", { configurable: true, value: 50 });
48
- Object.defineProperty(el, "scrollTop", { configurable: true, value: 80 });
53
+ const sp = new ScrollPosition(el);
54
+ const { x, y } = sp.setup();
55
+ Object.defineProperty(el, "scrollLeft", { value: 50, configurable: true });
56
+ Object.defineProperty(el, "scrollTop", { value: 75, configurable: true });
49
57
  el.dispatchEvent(new Event("scroll"));
50
58
  expect(x()).toBe(50);
51
- expect(y()).toBe(80);
59
+ expect(y()).toBe(75);
60
+ });
61
+ it("removes listener on unmount", () => {
62
+ const el = document.createElement("div");
63
+ const remove = vi.spyOn(el, "removeEventListener");
64
+ const sp = new ScrollPosition(el);
65
+ sp.setup();
66
+ sp.onUnmount();
67
+ expect(remove).toHaveBeenCalledWith("scroll", expect.any(Function));
52
68
  });
53
69
  });
54
- // ---------- useFocus ----------
55
- describe("useFocus", () => {
70
+ // ── ElementSize ───────────────────────────────────────────────────────────────
71
+ describe("ElementSize", () => {
72
+ let observerCallback;
73
+ beforeEach(() => {
74
+ vi.stubGlobal("ResizeObserver", class {
75
+ constructor(cb) {
76
+ this.observe = vi.fn();
77
+ this.disconnect = vi.fn();
78
+ observerCallback = cb;
79
+ }
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) {
102
+ this.observe = vi.fn();
103
+ this.disconnect = disconnect;
104
+ observerCallback = cb;
105
+ }
106
+ });
107
+ const ref = { current: null };
108
+ const es = new ElementSize(ref);
109
+ es.setup();
110
+ es.onUnmount();
111
+ expect(disconnect).toHaveBeenCalled();
112
+ });
113
+ });
114
+ // ── Intersection ──────────────────────────────────────────────────────────────
115
+ describe("Intersection", () => {
116
+ let observerCallback;
117
+ beforeEach(() => {
118
+ vi.stubGlobal("IntersectionObserver", class {
119
+ constructor(cb) {
120
+ this.observe = vi.fn();
121
+ this.disconnect = vi.fn();
122
+ observerCallback = cb;
123
+ }
124
+ });
125
+ });
126
+ it("starts as not visible", () => {
127
+ const ref = { current: null };
128
+ const int = new Intersection(ref);
129
+ const { visible } = int.setup();
130
+ expect(visible()).toBe(false);
131
+ });
132
+ it("becomes visible when intersecting", () => {
133
+ const el = document.createElement("div");
134
+ const ref = { current: el };
135
+ const int = new Intersection(ref);
136
+ const { visible } = int.setup();
137
+ observerCallback([{ isIntersecting: true }], {});
138
+ expect(visible()).toBe(true);
139
+ });
140
+ it("disconnects on unmount", () => {
141
+ const disconnect = vi.fn();
142
+ vi.stubGlobal("IntersectionObserver", class {
143
+ constructor(cb) {
144
+ this.observe = vi.fn();
145
+ this.disconnect = disconnect;
146
+ observerCallback = cb;
147
+ }
148
+ });
149
+ const ref = { current: null };
150
+ const int = new Intersection(ref);
151
+ int.setup();
152
+ int.onUnmount();
153
+ expect(disconnect).toHaveBeenCalled();
154
+ });
155
+ });
156
+ // ── ElementSize (additional) ──────────────────────────────────────────────────
157
+ describe("ElementSize (additional)", () => {
158
+ it("ref.current changes to a new element: old observer is disconnected and new one started", () => {
159
+ const disconnectFn = vi.fn();
160
+ const observeFn = vi.fn();
161
+ vi.stubGlobal("ResizeObserver", class {
162
+ constructor() {
163
+ this.observe = observeFn;
164
+ this.disconnect = disconnectFn;
165
+ }
166
+ });
167
+ const el1 = document.createElement("div");
168
+ const ref = { current: el1 };
169
+ const es = new ElementSize(ref);
170
+ es.setup();
171
+ // Disconnect old observer and create new one for el2
172
+ es.onUnmount();
173
+ expect(disconnectFn).toHaveBeenCalled();
174
+ const el2 = document.createElement("div");
175
+ ref.current = el2;
176
+ const es2 = new ElementSize(ref);
177
+ es2.setup();
178
+ expect(observeFn).toHaveBeenCalledWith(el2);
179
+ });
180
+ });
181
+ // ── Intersection (additional) ─────────────────────────────────────────────────
182
+ describe("Intersection (additional)", () => {
183
+ let observerCallback;
184
+ beforeEach(() => {
185
+ vi.stubGlobal("IntersectionObserver", class {
186
+ constructor(cb) {
187
+ this.observe = vi.fn();
188
+ this.disconnect = vi.fn();
189
+ observerCallback = cb;
190
+ }
191
+ });
192
+ });
193
+ it("visibility toggles false after being true", () => {
194
+ const el = document.createElement("div");
195
+ const ref = { current: el };
196
+ const int = new Intersection(ref);
197
+ const { visible } = int.setup();
198
+ observerCallback([{ isIntersecting: true }], {});
199
+ expect(visible()).toBe(true);
200
+ observerCallback([{ isIntersecting: false }], {});
201
+ expect(visible()).toBe(false);
202
+ });
203
+ });
204
+ // ── ScrollPosition (additional) ───────────────────────────────────────────────
205
+ describe("ScrollPosition (additional)", () => {
206
+ it("setup() called twice registers only one scroll listener", () => {
207
+ const el = document.createElement("div");
208
+ const add = vi.spyOn(el, "addEventListener");
209
+ const sp = new ScrollPosition(el);
210
+ sp.setup();
211
+ sp.setup();
212
+ const scrollCalls = add.mock.calls.filter((c) => c[0] === "scroll").length;
213
+ expect(scrollCalls).toBe(1);
214
+ });
215
+ });
216
+ // ── Focus ─────────────────────────────────────────────────────────────────────
217
+ describe("Focus", () => {
56
218
  it("starts as not focused", () => {
57
219
  const el = document.createElement("input");
58
- document.body.appendChild(el);
59
220
  const ref = { current: el };
60
- const focused = useFocus(ref);
221
+ const focus = new Focus(ref);
222
+ const { focused } = focus.setup();
61
223
  expect(focused()).toBe(false);
62
- document.body.removeChild(el);
63
224
  });
64
- it("becomes true on focus event", () => {
225
+ it("sets focused=true on focus event", () => {
65
226
  const el = document.createElement("input");
66
227
  document.body.appendChild(el);
67
228
  const ref = { current: el };
68
- const focused = useFocus(ref);
69
- el.dispatchEvent(new FocusEvent("focus"));
229
+ const focus = new Focus(ref);
230
+ const { focused } = focus.setup();
231
+ el.dispatchEvent(new Event("focus"));
70
232
  expect(focused()).toBe(true);
71
233
  document.body.removeChild(el);
72
234
  });
73
- it("becomes false on blur event", () => {
235
+ it("sets focused=false on blur event", () => {
74
236
  const el = document.createElement("input");
75
237
  document.body.appendChild(el);
76
238
  const ref = { current: el };
77
- const focused = useFocus(ref);
78
- el.dispatchEvent(new FocusEvent("focus"));
79
- el.dispatchEvent(new FocusEvent("blur"));
239
+ const focus = new Focus(ref);
240
+ const { focused } = focus.setup();
241
+ el.dispatchEvent(new Event("focus"));
242
+ el.dispatchEvent(new Event("blur"));
80
243
  expect(focused()).toBe(false);
81
244
  document.body.removeChild(el);
82
245
  });
83
- it("does nothing when ref.current is null", () => {
84
- const ref = { current: null };
85
- expect(() => useFocus(ref)).not.toThrow();
86
- });
87
- });
88
- // ---------- useElementSize ----------
89
- describe("useElementSize", () => {
90
- let observerCallback = () => { };
91
- let mockDisconnect;
92
- beforeEach(() => {
93
- mockDisconnect = vi.fn();
94
- observerCallback = () => { };
95
- // Class-based mock so `new ResizeObserver(cb)` works correctly
96
- globalThis.ResizeObserver = class {
97
- constructor(cb) { observerCallback = cb; }
98
- observe = vi.fn();
99
- disconnect = mockDisconnect;
100
- };
101
- });
102
- afterEach(() => {
103
- // @ts-expect-error – removing test stub
104
- delete globalThis.ResizeObserver;
105
- });
106
- it("starts at (0, 0) when ref.current is null", () => {
246
+ it("does not throw when ref is null", () => {
107
247
  const ref = { current: null };
108
- const { width, height } = useElementSize(ref);
109
- expect(width()).toBe(0);
110
- expect(height()).toBe(0);
248
+ const focus = new Focus(ref);
249
+ expect(() => focus.setup()).not.toThrow();
111
250
  });
112
- it("calls stop() to disconnect the ResizeObserver", () => {
113
- const el = document.createElement("div");
114
- const ref = { current: el };
115
- const { stop } = useElementSize(ref);
116
- stop();
117
- expect(mockDisconnect).toHaveBeenCalled();
251
+ it("removes focus/blur listeners when reactive ref changes (effect cleanup)", () => {
252
+ const el1 = document.createElement("input");
253
+ document.body.appendChild(el1);
254
+ // Make ref.current reactive so the effect tracks it and re-runs on change
255
+ const refSignal = signal(el1);
256
+ const ref = { get current() { return refSignal(); } };
257
+ const focus = new Focus(ref);
258
+ focus.setup();
259
+ const removeEl1 = vi.spyOn(el1, "removeEventListener");
260
+ // Changing the signal causes the effect to re-run, calling cleanup for el1
261
+ // This covers the cleanup function at dom.ts:134-135
262
+ const el2 = document.createElement("input");
263
+ document.body.appendChild(el2);
264
+ refSignal.set(el2);
265
+ expect(removeEl1).toHaveBeenCalledWith("focus", expect.any(Function));
266
+ expect(removeEl1).toHaveBeenCalledWith("blur", expect.any(Function));
267
+ document.body.removeChild(el1);
268
+ document.body.removeChild(el2);
118
269
  });
119
- it("updates width and height when ResizeObserver fires", () => {
120
- const el = document.createElement("div");
270
+ it("setup() called twice registers only one listener pair", () => {
271
+ const el = document.createElement("input");
272
+ document.body.appendChild(el);
273
+ const add = vi.spyOn(el, "addEventListener");
121
274
  const ref = { current: el };
122
- const { width, height } = useElementSize(ref);
123
- observerCallback([{ contentRect: { width: 300, height: 200 } }], null);
124
- expect(width()).toBe(300);
125
- expect(height()).toBe(200);
275
+ const focus = new Focus(ref);
276
+ focus.setup();
277
+ focus.setup();
278
+ const focusCalls = add.mock.calls.filter((c) => c[0] === "focus").length;
279
+ expect(focusCalls).toBe(1);
280
+ document.body.removeChild(el);
126
281
  });
127
282
  });
128
- // ---------- useIntersection ----------
129
- describe("useIntersection", () => {
130
- let intersectionCallback = () => { };
131
- let capturedOptions;
132
- beforeEach(() => {
133
- intersectionCallback = () => { };
134
- capturedOptions = undefined;
135
- globalThis.IntersectionObserver = class {
136
- constructor(cb, opts) {
137
- intersectionCallback = cb;
138
- capturedOptions = opts;
139
- }
140
- observe = vi.fn();
141
- disconnect = vi.fn();
142
- };
143
- });
144
- afterEach(() => {
145
- // @ts-expect-error – removing test stub
146
- delete globalThis.IntersectionObserver;
283
+ // ── WindowSize (additional) ───────────────────────────────────────────────────
284
+ describe("WindowSize (additional)", () => {
285
+ it("setup() called twice returns the same view object", () => {
286
+ const ws = new WindowSize();
287
+ const view1 = ws.setup();
288
+ const view2 = ws.setup();
289
+ expect(view1).toBe(view2);
290
+ ws.onUnmount();
147
291
  });
148
- it("starts as false when ref.current is null", () => {
149
- const ref = { current: null };
150
- const visible = useIntersection(ref);
151
- expect(visible()).toBe(false);
292
+ it("setup() called twice registers only one resize listener", () => {
293
+ const add = vi.spyOn(window, "addEventListener");
294
+ const ws = new WindowSize();
295
+ ws.setup();
296
+ ws.setup();
297
+ const resizeCalls = add.mock.calls.filter((c) => c[0] === "resize").length;
298
+ expect(resizeCalls).toBe(1);
299
+ ws.onUnmount();
300
+ vi.restoreAllMocks();
152
301
  });
153
- it("becomes true when IntersectionObserver fires with isIntersecting=true", () => {
302
+ });
303
+ // ── ElementSize (cache) ───────────────────────────────────────────────────────
304
+ describe("ElementSize (cache)", () => {
305
+ it("setup() called twice returns the same view object", () => {
154
306
  const el = document.createElement("div");
307
+ document.body.appendChild(el);
155
308
  const ref = { current: el };
156
- const visible = useIntersection(ref);
157
- intersectionCallback([{ isIntersecting: true }], null);
158
- expect(visible()).toBe(true);
309
+ const es = new ElementSize(ref);
310
+ const view1 = es.setup();
311
+ const view2 = es.setup();
312
+ expect(view1).toBe(view2);
313
+ es.onUnmount();
314
+ document.body.removeChild(el);
159
315
  });
160
- it("passes options to IntersectionObserver", () => {
161
- const ref = { current: null };
162
- const options = { threshold: 0.5 };
163
- useIntersection(ref, options);
164
- expect(capturedOptions).toEqual(options);
316
+ });
317
+ // ── Intersection (cache) ──────────────────────────────────────────────────────
318
+ describe("Intersection (cache)", () => {
319
+ it("setup() called twice returns the same view object", () => {
320
+ const el = document.createElement("div");
321
+ document.body.appendChild(el);
322
+ const ref = { current: el };
323
+ const inter = new Intersection(ref);
324
+ const view1 = inter.setup();
325
+ const view2 = inter.setup();
326
+ expect(view1).toBe(view2);
327
+ inter.onUnmount();
328
+ document.body.removeChild(el);
165
329
  });
166
330
  });
167
331
  //# sourceMappingURL=dom.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom.test.js","sourceRoot":"","sources":["../../src/__tests__/dom.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dom.test.js","sourceRoot":"","sources":["../../src/__tests__/dom.test.ts"],"names":[],"mappings":"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"}