@praxisjs/runtime 0.7.1 → 0.8.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.
Files changed (138) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/children.d.ts.map +1 -1
  3. package/dist/children.js +2 -1
  4. package/dist/children.js.map +1 -1
  5. package/dist/component.d.ts +2 -3
  6. package/dist/component.d.ts.map +1 -1
  7. package/dist/component.js +133 -60
  8. package/dist/component.js.map +1 -1
  9. package/dist/context.d.ts +13 -0
  10. package/dist/context.d.ts.map +1 -1
  11. package/dist/context.js +24 -2
  12. package/dist/context.js.map +1 -1
  13. package/dist/dom/constants.d.ts +1 -1
  14. package/dist/dom/constants.d.ts.map +1 -1
  15. package/dist/dom/constants.js +24 -83
  16. package/dist/dom/constants.js.map +1 -1
  17. package/dist/dom/create.d.ts +1 -1
  18. package/dist/dom/create.d.ts.map +1 -1
  19. package/dist/dom/create.js +3 -3
  20. package/dist/dom/create.js.map +1 -1
  21. package/dist/dom/events.d.ts +28 -0
  22. package/dist/dom/events.d.ts.map +1 -1
  23. package/dist/dom/events.js +163 -17
  24. package/dist/dom/events.js.map +1 -1
  25. package/dist/dom/props.d.ts +4 -0
  26. package/dist/dom/props.d.ts.map +1 -1
  27. package/dist/dom/props.js +55 -7
  28. package/dist/dom/props.js.map +1 -1
  29. package/dist/dom/range.d.ts +4 -0
  30. package/dist/dom/range.d.ts.map +1 -0
  31. package/dist/dom/range.js +43 -0
  32. package/dist/dom/range.js.map +1 -0
  33. package/dist/dom/remove.d.ts.map +1 -1
  34. package/dist/dom/remove.js +2 -8
  35. package/dist/dom/remove.js.map +1 -1
  36. package/dist/element.d.ts.map +1 -1
  37. package/dist/element.js +7 -5
  38. package/dist/element.js.map +1 -1
  39. package/dist/hmr.d.ts +35 -0
  40. package/dist/hmr.d.ts.map +1 -0
  41. package/dist/hmr.js +85 -0
  42. package/dist/hmr.js.map +1 -0
  43. package/dist/hydration-context.d.ts +9 -1
  44. package/dist/hydration-context.d.ts.map +1 -1
  45. package/dist/hydration-context.js +34 -13
  46. package/dist/hydration-context.js.map +1 -1
  47. package/dist/hydration.d.ts.map +1 -1
  48. package/dist/hydration.js +4 -11
  49. package/dist/hydration.js.map +1 -1
  50. package/dist/index.d.ts +16 -5
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +31 -7
  53. package/dist/index.js.map +1 -1
  54. package/dist/list.d.ts +72 -0
  55. package/dist/list.d.ts.map +1 -0
  56. package/dist/list.js +786 -0
  57. package/dist/list.js.map +1 -0
  58. package/dist/portal.d.ts.map +1 -1
  59. package/dist/portal.js +3 -0
  60. package/dist/portal.js.map +1 -1
  61. package/dist/reactive.d.ts +2 -2
  62. package/dist/reactive.d.ts.map +1 -1
  63. package/dist/reactive.js +109 -34
  64. package/dist/reactive.js.map +1 -1
  65. package/dist/scope.d.ts +14 -4
  66. package/dist/scope.d.ts.map +1 -1
  67. package/dist/scope.js +55 -15
  68. package/dist/scope.js.map +1 -1
  69. package/dist/template.d.ts +48 -0
  70. package/dist/template.d.ts.map +1 -0
  71. package/dist/template.js +270 -0
  72. package/dist/template.js.map +1 -0
  73. package/package.json +15 -6
  74. package/src/children.ts +2 -1
  75. package/src/component.ts +135 -63
  76. package/src/context.ts +35 -4
  77. package/src/dom/constants.ts +25 -82
  78. package/src/dom/create.ts +3 -3
  79. package/src/dom/events.ts +184 -16
  80. package/src/dom/props.ts +65 -8
  81. package/src/dom/range.ts +45 -0
  82. package/src/dom/remove.ts +3 -7
  83. package/src/element.ts +8 -6
  84. package/src/hmr.ts +110 -0
  85. package/src/hydration-context.ts +34 -13
  86. package/src/hydration.ts +4 -9
  87. package/src/index.ts +54 -7
  88. package/src/list.ts +886 -0
  89. package/src/portal.ts +3 -0
  90. package/src/reactive.ts +147 -40
  91. package/src/scope.ts +63 -16
  92. package/src/template.ts +271 -0
  93. package/dist/__tests__/children.test.d.ts +0 -2
  94. package/dist/__tests__/children.test.d.ts.map +0 -1
  95. package/dist/__tests__/children.test.js +0 -241
  96. package/dist/__tests__/children.test.js.map +0 -1
  97. package/dist/__tests__/component.test.d.ts +0 -2
  98. package/dist/__tests__/component.test.d.ts.map +0 -1
  99. package/dist/__tests__/component.test.js +0 -347
  100. package/dist/__tests__/component.test.js.map +0 -1
  101. package/dist/__tests__/context.test.d.ts +0 -2
  102. package/dist/__tests__/context.test.d.ts.map +0 -1
  103. package/dist/__tests__/context.test.js +0 -111
  104. package/dist/__tests__/context.test.js.map +0 -1
  105. package/dist/__tests__/dom.test.d.ts +0 -2
  106. package/dist/__tests__/dom.test.d.ts.map +0 -1
  107. package/dist/__tests__/dom.test.js +0 -429
  108. package/dist/__tests__/dom.test.js.map +0 -1
  109. package/dist/__tests__/hydration.test.d.ts +0 -2
  110. package/dist/__tests__/hydration.test.d.ts.map +0 -1
  111. package/dist/__tests__/hydration.test.js +0 -299
  112. package/dist/__tests__/hydration.test.js.map +0 -1
  113. package/dist/__tests__/portal.test.d.ts +0 -2
  114. package/dist/__tests__/portal.test.d.ts.map +0 -1
  115. package/dist/__tests__/portal.test.js +0 -157
  116. package/dist/__tests__/portal.test.js.map +0 -1
  117. package/dist/__tests__/remove.test.d.ts +0 -2
  118. package/dist/__tests__/remove.test.d.ts.map +0 -1
  119. package/dist/__tests__/remove.test.js +0 -45
  120. package/dist/__tests__/remove.test.js.map +0 -1
  121. package/dist/__tests__/render.test.d.ts +0 -2
  122. package/dist/__tests__/render.test.d.ts.map +0 -1
  123. package/dist/__tests__/render.test.js +0 -97
  124. package/dist/__tests__/render.test.js.map +0 -1
  125. package/dist/__tests__/scope.test.d.ts +0 -2
  126. package/dist/__tests__/scope.test.d.ts.map +0 -1
  127. package/dist/__tests__/scope.test.js +0 -110
  128. package/dist/__tests__/scope.test.js.map +0 -1
  129. package/src/__tests__/children.test.ts +0 -276
  130. package/src/__tests__/component.test.ts +0 -381
  131. package/src/__tests__/context.test.ts +0 -128
  132. package/src/__tests__/dom.test.ts +0 -483
  133. package/src/__tests__/hydration.test.ts +0 -360
  134. package/src/__tests__/portal.test.ts +0 -177
  135. package/src/__tests__/remove.test.ts +0 -51
  136. package/src/__tests__/render.test.ts +0 -119
  137. package/src/__tests__/scope.test.ts +0 -120
  138. package/tsconfig.json +0 -8
@@ -1,111 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { runInScope, getCurrentScope } from "../context";
3
- import { Scope } from "../scope";
4
- describe("runInScope / getCurrentScope", () => {
5
- it("getCurrentScope throws when called outside of a render context", () => {
6
- expect(() => getCurrentScope()).toThrow("[PraxisJS]");
7
- });
8
- it("runInScope makes the scope available via getCurrentScope", () => {
9
- const scope = new Scope();
10
- let captured = null;
11
- runInScope(scope, () => {
12
- captured = getCurrentScope();
13
- });
14
- expect(captured).toBe(scope);
15
- });
16
- it("restores previous scope after runInScope exits", () => {
17
- const outer = new Scope();
18
- const inner = new Scope();
19
- let innerCaptured = null;
20
- let outerAfter = null;
21
- runInScope(outer, () => {
22
- runInScope(inner, () => {
23
- innerCaptured = getCurrentScope();
24
- });
25
- outerAfter = getCurrentScope();
26
- });
27
- expect(innerCaptured).toBe(inner);
28
- expect(outerAfter).toBe(outer);
29
- });
30
- it("restores null scope even when the callback throws", () => {
31
- const scope = new Scope();
32
- expect(() => runInScope(scope, () => {
33
- throw new Error("boom");
34
- })).toThrow("boom");
35
- expect(() => getCurrentScope()).toThrow("[PraxisJS]");
36
- });
37
- it("returns the callback's return value", () => {
38
- const scope = new Scope();
39
- const result = runInScope(scope, () => 42);
40
- expect(result).toBe(42);
41
- });
42
- it("multiple sequential runInScope() calls at same nesting level do not leak state", () => {
43
- const a = new Scope();
44
- const b = new Scope();
45
- let capturedA = null;
46
- let capturedB = null;
47
- runInScope(a, () => { capturedA = getCurrentScope(); });
48
- runInScope(b, () => { capturedB = getCurrentScope(); });
49
- expect(capturedA).toBe(a);
50
- expect(capturedB).toBe(b);
51
- // After both calls, we should be back outside any scope
52
- expect(() => getCurrentScope()).toThrow("[PraxisJS]");
53
- });
54
- it("very deeply nested runInScope() (5+ levels) restores all scopes correctly", () => {
55
- const scopes = Array.from({ length: 6 }, () => new Scope());
56
- const captured = [];
57
- runInScope(scopes[0], () => {
58
- captured.push(getCurrentScope());
59
- runInScope(scopes[1], () => {
60
- captured.push(getCurrentScope());
61
- runInScope(scopes[2], () => {
62
- captured.push(getCurrentScope());
63
- runInScope(scopes[3], () => {
64
- captured.push(getCurrentScope());
65
- runInScope(scopes[4], () => {
66
- captured.push(getCurrentScope());
67
- runInScope(scopes[5], () => {
68
- captured.push(getCurrentScope());
69
- });
70
- captured.push(getCurrentScope()); // back to 4
71
- });
72
- captured.push(getCurrentScope()); // back to 3
73
- });
74
- captured.push(getCurrentScope()); // back to 2
75
- });
76
- captured.push(getCurrentScope()); // back to 1
77
- });
78
- captured.push(getCurrentScope()); // back to 0
79
- });
80
- expect(captured).toEqual([
81
- scopes[0],
82
- scopes[1],
83
- scopes[2],
84
- scopes[3],
85
- scopes[4],
86
- scopes[5],
87
- scopes[4],
88
- scopes[3],
89
- scopes[2],
90
- scopes[1],
91
- scopes[0],
92
- ]);
93
- expect(() => getCurrentScope()).toThrow("[PraxisJS]");
94
- });
95
- it("exception at different nesting depths always restores outer scope", () => {
96
- const outer = new Scope();
97
- const middle = new Scope();
98
- // Exception in middle scope restores outer
99
- expect(() => {
100
- runInScope(outer, () => {
101
- runInScope(middle, () => {
102
- throw new Error("middle throws");
103
- });
104
- });
105
- }).toThrow("middle throws");
106
- // outer is still active since the outer runInScope completed normally
107
- // (exception propagated through it too), so after all we should be back to null
108
- expect(() => getCurrentScope()).toThrow("[PraxisJS]");
109
- });
110
- });
111
- //# sourceMappingURL=context.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.test.js","sourceRoot":"","sources":["../../src/__tests__/context.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,QAAQ,GAAiB,IAAI,CAAC;QAClC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;YACrB,QAAQ,GAAG,eAAe,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,IAAI,aAAa,GAAiB,IAAI,CAAC;QACvC,IAAI,UAAU,GAAiB,IAAI,CAAC;QAEpC,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;YACrB,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;gBACrB,aAAa,GAAG,eAAe,EAAE,CAAC;YACpC,CAAC,CAAC,CAAC;YACH,UAAU,GAAG,eAAe,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,EAAE,CACV,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,CACH,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAElB,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,SAAS,GAAiB,IAAI,CAAC;QACnC,IAAI,SAAS,GAAiB,IAAI,CAAC;QACnC,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,SAAS,GAAG,eAAe,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,wDAAwD;QACxD,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAqB,EAAE,CAAC;QAEtC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;YACzB,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;YACjC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;gBACzB,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;gBACjC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;oBACzB,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;oBACjC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;wBACzB,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;wBACjC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;4BACzB,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;4BACjC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE;gCACzB,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;4BACnC,CAAC,CAAC,CAAC;4BACH,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,YAAY;wBAChD,CAAC,CAAC,CAAC;wBACH,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,YAAY;oBAChD,CAAC,CAAC,CAAC;oBACH,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,YAAY;gBAChD,CAAC,CAAC,CAAC;gBACH,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,YAAY;YAChD,CAAC,CAAC,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,YAAY;QAChD,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC;YACvB,MAAM,CAAC,CAAC,CAAC;YACT,MAAM,CAAC,CAAC,CAAC;YACT,MAAM,CAAC,CAAC,CAAC;YACT,MAAM,CAAC,CAAC,CAAC;YACT,MAAM,CAAC,CAAC,CAAC;YACT,MAAM,CAAC,CAAC,CAAC;YACT,MAAM,CAAC,CAAC,CAAC;YACT,MAAM,CAAC,CAAC,CAAC;YACT,MAAM,CAAC,CAAC,CAAC;YACT,MAAM,CAAC,CAAC,CAAC;YACT,MAAM,CAAC,CAAC,CAAC;SACV,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QAE3B,2CAA2C;QAC3C,MAAM,CAAC,GAAG,EAAE;YACV,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE;gBACrB,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE;oBACtB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;gBACnC,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAE5B,sEAAsE;QACtE,gFAAgF;QAChF,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=dom.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dom.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/dom.test.ts"],"names":[],"mappings":""}
@@ -1,429 +0,0 @@
1
- // @vitest-environment jsdom
2
- import { describe, it, expect, vi } from "vitest";
3
- import { signal } from "@praxisjs/core/internal";
4
- import { createElement } from "../dom/create";
5
- import { addEvent } from "../dom/events";
6
- import { applyProp } from "../dom/props";
7
- import { Scope } from "../scope";
8
- // ── createElement ────────────────────────────────────────────────────────────
9
- describe("createElement", () => {
10
- it("creates an HTMLElement for regular tags", () => {
11
- const el = createElement("div");
12
- expect(el).toBeInstanceOf(HTMLDivElement);
13
- expect(el.tagName.toLowerCase()).toBe("div");
14
- });
15
- it("creates an SVGElement for svg tags", () => {
16
- const el = createElement("svg");
17
- expect(el).toBeInstanceOf(SVGElement);
18
- expect(el.tagName.toLowerCase()).toBe("svg");
19
- });
20
- it("creates nested svg elements with the SVG namespace", () => {
21
- const path = createElement("path");
22
- expect(path.namespaceURI).toBe("http://www.w3.org/2000/svg");
23
- });
24
- });
25
- // ── applyProp ────────────────────────────────────────────────────────────────
26
- describe("applyProp", () => {
27
- it("sets class attribute", () => {
28
- const el = document.createElement("div");
29
- const scope = new Scope();
30
- applyProp(el, "class", "foo bar", scope);
31
- expect(el.getAttribute("class")).toBe("foo bar");
32
- });
33
- it("sets className as class attribute", () => {
34
- const el = document.createElement("div");
35
- const scope = new Scope();
36
- applyProp(el, "className", "my-class", scope);
37
- expect(el.getAttribute("class")).toBe("my-class");
38
- });
39
- it("removes class when value is null", () => {
40
- const el = document.createElement("div");
41
- el.setAttribute("class", "old");
42
- const scope = new Scope();
43
- applyProp(el, "class", null, scope);
44
- expect(el.hasAttribute("class")).toBe(false);
45
- });
46
- it("sets style as string", () => {
47
- const el = document.createElement("div");
48
- const scope = new Scope();
49
- applyProp(el, "style", "color: red;", scope);
50
- expect(el.getAttribute("style")).toBe("color: red;");
51
- });
52
- it("sets style as object", () => {
53
- const el = document.createElement("div");
54
- const scope = new Scope();
55
- applyProp(el, "style", { color: "blue" }, scope);
56
- expect(el.style.color).toBe("blue");
57
- });
58
- it("sets boolean true as empty attribute", () => {
59
- const el = document.createElement("input");
60
- const scope = new Scope();
61
- applyProp(el, "disabled", true, scope);
62
- expect(el.hasAttribute("disabled")).toBe(true);
63
- });
64
- it("removes attribute when value is false", () => {
65
- const el = document.createElement("input");
66
- el.setAttribute("disabled", "");
67
- const scope = new Scope();
68
- applyProp(el, "disabled", false, scope);
69
- expect(el.hasAttribute("disabled")).toBe(false);
70
- });
71
- it("sets value prop directly on element", () => {
72
- const el = document.createElement("input");
73
- const scope = new Scope();
74
- applyProp(el, "value", "hello", scope);
75
- expect(el.value).toBe("hello");
76
- });
77
- it("calls ref callback with the element", () => {
78
- const el = document.createElement("span");
79
- const scope = new Scope();
80
- const ref = vi.fn();
81
- applyProp(el, "ref", ref, scope);
82
- expect(ref).toHaveBeenCalledWith(el);
83
- });
84
- it("skips 'children' and 'key' props", () => {
85
- const el = document.createElement("div");
86
- const scope = new Scope();
87
- applyProp(el, "children", "should be ignored", scope);
88
- applyProp(el, "key", "k1", scope);
89
- expect(el.childNodes.length).toBe(0);
90
- expect(el.hasAttribute("key")).toBe(false);
91
- });
92
- it("attaches event listener for onClick", () => {
93
- const el = document.createElement("button");
94
- const scope = new Scope();
95
- const handler = vi.fn();
96
- applyProp(el, "onClick", handler, scope);
97
- el.dispatchEvent(new MouseEvent("click"));
98
- expect(handler).toHaveBeenCalledOnce();
99
- });
100
- it("removes event listener on scope dispose", () => {
101
- const el = document.createElement("button");
102
- const scope = new Scope();
103
- const handler = vi.fn();
104
- applyProp(el, "onClick", handler, scope);
105
- scope.dispose();
106
- el.dispatchEvent(new MouseEvent("click"));
107
- expect(handler).not.toHaveBeenCalled();
108
- });
109
- it("tracks reactive prop — updates when signal changes", () => {
110
- const el = document.createElement("div");
111
- const scope = new Scope();
112
- const cls = signal("initial");
113
- applyProp(el, "class", () => cls(), scope);
114
- expect(el.getAttribute("class")).toBe("initial");
115
- cls.set("updated");
116
- expect(el.getAttribute("class")).toBe("updated");
117
- scope.dispose();
118
- });
119
- it("normalizes htmlFor to for attribute", () => {
120
- const label = document.createElement("label");
121
- const scope = new Scope();
122
- applyProp(label, "htmlFor", "my-input", scope);
123
- expect(label.getAttribute("for")).toBe("my-input");
124
- });
125
- it("removes style attribute when value is null", () => {
126
- const el = document.createElement("div");
127
- el.setAttribute("style", "color: red;");
128
- const scope = new Scope();
129
- applyProp(el, "style", null, scope);
130
- expect(el.hasAttribute("style")).toBe(false);
131
- });
132
- it("sets boolean true as empty string for non-VALUE_PROPS attributes (applyAttr path)", () => {
133
- const el = document.createElement("div");
134
- const scope = new Scope();
135
- applyProp(el, "aria-expanded", true, scope);
136
- expect(el.getAttribute("aria-expanded")).toBe("");
137
- });
138
- it("removes style attribute when value is undefined", () => {
139
- const el = document.createElement("div");
140
- el.setAttribute("style", "color: red;");
141
- const scope = new Scope();
142
- applyProp(el, "style", undefined, scope);
143
- expect(el.hasAttribute("style")).toBe(false);
144
- });
145
- it("removes attribute when value is null for generic attr", () => {
146
- const el = document.createElement("div");
147
- el.setAttribute("data-x", "1");
148
- const scope = new Scope();
149
- applyProp(el, "data-x", null, scope);
150
- expect(el.hasAttribute("data-x")).toBe(false);
151
- });
152
- it("removes attribute when value is undefined for generic attr", () => {
153
- const el = document.createElement("div");
154
- el.setAttribute("data-y", "1");
155
- const scope = new Scope();
156
- applyProp(el, "data-y", undefined, scope);
157
- expect(el.hasAttribute("data-y")).toBe(false);
158
- });
159
- it("data-x attribute applied via setAttribute not as DOM property", () => {
160
- const el = document.createElement("div");
161
- const scope = new Scope();
162
- applyProp(el, "data-x", "foo", scope);
163
- expect(el.getAttribute("data-x")).toBe("foo");
164
- // should not be set as a direct property
165
- expect(el["data-x"]).toBeUndefined();
166
- });
167
- it("aria-label applied via setAttribute", () => {
168
- const el = document.createElement("button");
169
- const scope = new Scope();
170
- applyProp(el, "aria-label", "close", scope);
171
- expect(el.getAttribute("aria-label")).toBe("close");
172
- });
173
- it("style object with CSS variable { \"--color\": \"red\" } — verify it's applied", () => {
174
- const el = document.createElement("div");
175
- const scope = new Scope();
176
- applyProp(el, "style", { "--color": "red" }, scope);
177
- expect(el.style.getPropertyValue("--color")).toBe("red");
178
- });
179
- it("reactive prop going from a value to null — attribute is removed", () => {
180
- const el = document.createElement("div");
181
- const scope = new Scope();
182
- const cls = signal("visible");
183
- applyProp(el, "class", () => cls(), scope);
184
- expect(el.getAttribute("class")).toBe("visible");
185
- cls.set(null);
186
- expect(el.hasAttribute("class")).toBe(false);
187
- scope.dispose();
188
- });
189
- it("boolean false — attribute is removed (not set to \"false\")", () => {
190
- const el = document.createElement("div");
191
- el.setAttribute("data-active", "true");
192
- const scope = new Scope();
193
- applyProp(el, "data-active", false, scope);
194
- expect(el.hasAttribute("data-active")).toBe(false);
195
- });
196
- it("sets muted prop directly on a media element (no hardcoded list needed)", () => {
197
- const el = document.createElement("video");
198
- const scope = new Scope();
199
- applyProp(el, "muted", true, scope);
200
- expect(el.muted).toBe(true);
201
- // the muted *attribute* only sets defaultMuted — it should stay untouched
202
- expect(el.hasAttribute("muted")).toBe(false);
203
- });
204
- it("tracks reactive muted — keeps working after user interaction dirties the element", () => {
205
- const el = document.createElement("video");
206
- const scope = new Scope();
207
- const muted = signal(false);
208
- applyProp(el, "muted", () => muted(), scope);
209
- el.muted = true; // simulate the user/browser changing live state directly
210
- muted.set(true);
211
- expect(el.muted).toBe(true);
212
- muted.set(false);
213
- expect(el.muted).toBe(false);
214
- scope.dispose();
215
- });
216
- it("does not write SVG geometry props as DOM properties (read-only accessors would throw)", () => {
217
- const el = createElement("rect");
218
- const scope = new Scope();
219
- expect(() => { applyProp(el, "width", "50", scope); }).not.toThrow();
220
- expect(el.getAttribute("width")).toBe("50");
221
- });
222
- it("falls back to setAttribute for read-only reference properties like 'list'", () => {
223
- const el = document.createElement("input");
224
- const scope = new Scope();
225
- expect(() => { applyProp(el, "list", "my-datalist", scope); }).not.toThrow();
226
- expect(el.getAttribute("list")).toBe("my-datalist");
227
- });
228
- it("removes attribute for a two-way-reflected prop when value is undefined", () => {
229
- const el = document.createElement("div");
230
- el.id = "old-id";
231
- const scope = new Scope();
232
- applyProp(el, "id", undefined, scope);
233
- expect(el.hasAttribute("id")).toBe(false);
234
- });
235
- });
236
- // ── addEvent ─────────────────────────────────────────────────────────────────
237
- describe("addEvent", () => {
238
- it("adds event listener that fires on dispatch", () => {
239
- const el = document.createElement("button");
240
- const scope = new Scope();
241
- const fn = vi.fn();
242
- addEvent(el, "click", fn, scope);
243
- el.dispatchEvent(new MouseEvent("click"));
244
- expect(fn).toHaveBeenCalledOnce();
245
- });
246
- it("removes listener when scope is disposed", () => {
247
- const el = document.createElement("button");
248
- const scope = new Scope();
249
- const fn = vi.fn();
250
- addEvent(el, "click", fn, scope);
251
- scope.dispose();
252
- el.dispatchEvent(new MouseEvent("click"));
253
- expect(fn).not.toHaveBeenCalled();
254
- });
255
- it("event handler runs and scope cleanup still works afterwards", () => {
256
- // Verify that after a handler fires, the scope can still be disposed cleanly.
257
- // (Throwing inside an event handler becomes an uncaught global exception in jsdom,
258
- // so we verify the invariant without triggering that path.)
259
- const el = document.createElement("button");
260
- const scope = new Scope();
261
- const handler = vi.fn();
262
- const cleanup = vi.fn();
263
- addEvent(el, "click", handler, scope);
264
- scope.add(cleanup);
265
- el.dispatchEvent(new MouseEvent("click"));
266
- expect(handler).toHaveBeenCalledOnce();
267
- expect(() => scope.dispose()).not.toThrow();
268
- expect(cleanup).toHaveBeenCalled();
269
- });
270
- it("same handler registered twice on same element/event — both fire (browser behavior)", () => {
271
- // Note: addEventListener deduplicates identical handler+options combos;
272
- // addEvent is a thin wrapper so each call registers independently.
273
- // Two separate scopes / two separate registrations = two calls.
274
- const el = document.createElement("button");
275
- const scope = new Scope();
276
- const fn = vi.fn();
277
- addEvent(el, "click", fn, scope);
278
- addEvent(el, "click", fn, scope);
279
- el.dispatchEvent(new MouseEvent("click"));
280
- // addEventListener with the same listener reference is a no-op per spec
281
- expect(fn).toHaveBeenCalledOnce();
282
- scope.dispose();
283
- });
284
- it("batches signal writes made by a handler so effects run once", () => {
285
- const el = document.createElement("button");
286
- const scope = new Scope();
287
- const a = signal(0);
288
- const b = signal(0);
289
- const runs = vi.fn();
290
- scope.effect(() => {
291
- void a();
292
- void b();
293
- runs();
294
- });
295
- runs.mockClear();
296
- addEvent(el, "click", () => {
297
- a.set(1);
298
- b.set(1);
299
- }, scope);
300
- el.dispatchEvent(new MouseEvent("click"));
301
- expect(runs).toHaveBeenCalledOnce();
302
- scope.dispose();
303
- });
304
- it("calls the handler with the element as this and forwards the event", () => {
305
- const el = document.createElement("button");
306
- const scope = new Scope();
307
- let seenThis;
308
- let seenEvent;
309
- addEvent(el, "click", function (e) {
310
- seenThis = this;
311
- seenEvent = e;
312
- }, scope);
313
- const event = new MouseEvent("click");
314
- el.dispatchEvent(event);
315
- expect(seenThis).toBe(el);
316
- expect(seenEvent).toBe(event);
317
- scope.dispose();
318
- });
319
- it("registers the same handler on different elements independently", () => {
320
- const a = document.createElement("button");
321
- const b = document.createElement("button");
322
- const scope = new Scope();
323
- const fn = vi.fn();
324
- addEvent(a, "click", fn, scope);
325
- addEvent(b, "click", fn, scope);
326
- a.dispatchEvent(new MouseEvent("click"));
327
- b.dispatchEvent(new MouseEvent("click"));
328
- expect(fn).toHaveBeenCalledTimes(2);
329
- scope.dispose();
330
- a.dispatchEvent(new MouseEvent("click"));
331
- expect(fn).toHaveBeenCalledTimes(2);
332
- });
333
- });
334
- describe("applyProp writable-property cache", () => {
335
- it("assigns prototype properties and keeps doing so for later elements of the same tag", () => {
336
- const scope = new Scope();
337
- const first = document.createElement("input");
338
- const second = document.createElement("input");
339
- applyProp(first, "value", "a", scope);
340
- applyProp(second, "value", "b", scope);
341
- expect(first.value).toBe("a");
342
- expect(second.value).toBe("b");
343
- });
344
- it("falls back to attributes for unknown and read-only properties, consistently across elements", () => {
345
- const scope = new Scope();
346
- for (let i = 0; i < 2; i++) {
347
- const input = document.createElement("input");
348
- applyProp(input, "data-x", "1", scope);
349
- applyProp(input, "list", "dl", scope);
350
- expect(input.getAttribute("data-x")).toBe("1");
351
- expect(input.getAttribute("list")).toBe("dl");
352
- }
353
- });
354
- it("honours own properties: writable ones are assigned, getter-only ones become attributes", () => {
355
- const scope = new Scope();
356
- const el = document.createElement("div");
357
- el.expando = "old";
358
- Object.defineProperty(el, "readonlyThing", { get: () => "fixed", configurable: true });
359
- applyProp(el, "expando", "new", scope);
360
- applyProp(el, "readonlyThing", "attr", scope);
361
- expect(el.expando).toBe("new");
362
- expect(el.readonlyThing).toBe("fixed");
363
- expect(el.getAttribute("readonlyThing")).toBe("attr");
364
- });
365
- it("an own property with a setter is assigned", () => {
366
- const scope = new Scope();
367
- const el = document.createElement("div");
368
- let stored = "";
369
- Object.defineProperty(el, "custom", { get: () => stored, set: (v) => { stored = v; }, configurable: true });
370
- applyProp(el, "custom", "set", scope);
371
- expect(stored).toBe("set");
372
- });
373
- it("runs ref callbacks untracked so they do not subscribe the enclosing effect", () => {
374
- const scope = new Scope();
375
- const s = signal(0);
376
- const runs = vi.fn();
377
- scope.effect(() => {
378
- runs();
379
- applyProp(document.createElement("div"), "ref", () => { void s(); }, scope);
380
- });
381
- s.set(1);
382
- expect(runs).toHaveBeenCalledOnce();
383
- });
384
- });
385
- describe("event props without a usable handler", () => {
386
- it.each([undefined, null])("addEvent ignores a %s handler", (handler) => {
387
- const el = document.createElement("button");
388
- const scope = new Scope();
389
- const add = vi.spyOn(el, "addEventListener");
390
- expect(() => { addEvent(el, "click", handler, scope); }).not.toThrow();
391
- expect(add).not.toHaveBeenCalled();
392
- expect(() => { scope.dispose(); }).not.toThrow();
393
- });
394
- it.each([undefined, null])("applyProp skips an onClick prop whose value is %s", (value) => {
395
- const el = document.createElement("button");
396
- const scope = new Scope();
397
- expect(() => { applyProp(el, "onClick", value, scope); }).not.toThrow();
398
- expect(() => { el.dispatchEvent(new MouseEvent("click")); }).not.toThrow();
399
- });
400
- it("still registers a handler passed later in the same props object", () => {
401
- const el = document.createElement("form");
402
- const scope = new Scope();
403
- const onInput = vi.fn();
404
- applyProp(el, "onSubmit", undefined, scope);
405
- applyProp(el, "onInput", onInput, scope);
406
- el.dispatchEvent(new Event("input"));
407
- expect(onInput).toHaveBeenCalledOnce();
408
- });
409
- it("supports an EventListenerObject, calling handleEvent as the DOM does", () => {
410
- const el = document.createElement("button");
411
- const scope = new Scope();
412
- const handleEvent = vi.fn();
413
- const listener = { handleEvent };
414
- addEvent(el, "click", listener, scope);
415
- const event = new MouseEvent("click");
416
- el.dispatchEvent(event);
417
- expect(handleEvent).toHaveBeenCalledWith(event);
418
- scope.dispose();
419
- el.dispatchEvent(new MouseEvent("click"));
420
- expect(handleEvent).toHaveBeenCalledOnce();
421
- });
422
- });
423
- describe("ref prop without a callback", () => {
424
- it.each([undefined, null])("applyProp ignores a ref whose value is %s", (value) => {
425
- const el = document.createElement("div");
426
- expect(() => { applyProp(el, "ref", value, new Scope()); }).not.toThrow();
427
- });
428
- });
429
- //# 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=hydration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hydration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/hydration.test.ts"],"names":[],"mappings":""}