rask-ui 0.2.4 → 0.2.6

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 (195) hide show
  1. package/dist/vdom/AbstractVNode.d.ts +24 -2
  2. package/dist/vdom/AbstractVNode.d.ts.map +1 -1
  3. package/dist/vdom/AbstractVNode.js +153 -13
  4. package/dist/vdom/ComponentVNode.d.ts +2 -2
  5. package/dist/vdom/ComponentVNode.d.ts.map +1 -1
  6. package/dist/vdom/ComponentVNode.js +11 -13
  7. package/dist/vdom/ElementVNode.d.ts +2 -8
  8. package/dist/vdom/ElementVNode.d.ts.map +1 -1
  9. package/dist/vdom/ElementVNode.js +15 -32
  10. package/dist/vdom/FragmentVNode.d.ts +2 -2
  11. package/dist/vdom/FragmentVNode.d.ts.map +1 -1
  12. package/dist/vdom/FragmentVNode.js +12 -3
  13. package/dist/vdom/RootVNode.d.ts +2 -2
  14. package/dist/vdom/RootVNode.d.ts.map +1 -1
  15. package/dist/vdom/RootVNode.js +7 -5
  16. package/package.json +1 -1
  17. package/dist/component.d.ts +0 -38
  18. package/dist/component.d.ts.map +0 -1
  19. package/dist/component.js +0 -130
  20. package/dist/context.d.ts +0 -5
  21. package/dist/context.d.ts.map +0 -1
  22. package/dist/context.js +0 -29
  23. package/dist/createAsync.test.d.ts +0 -2
  24. package/dist/createAsync.test.d.ts.map +0 -1
  25. package/dist/createAsync.test.js +0 -110
  26. package/dist/createAsyncState.d.ts +0 -16
  27. package/dist/createAsyncState.d.ts.map +0 -1
  28. package/dist/createAsyncState.js +0 -24
  29. package/dist/createContext.test.d.ts +0 -2
  30. package/dist/createContext.test.d.ts.map +0 -1
  31. package/dist/createContext.test.js +0 -136
  32. package/dist/createMutation.test.d.ts +0 -2
  33. package/dist/createMutation.test.d.ts.map +0 -1
  34. package/dist/createMutation.test.js +0 -168
  35. package/dist/createQuery.test.d.ts +0 -2
  36. package/dist/createQuery.test.d.ts.map +0 -1
  37. package/dist/createQuery.test.js +0 -156
  38. package/dist/createRef.test.d.ts +0 -2
  39. package/dist/createRef.test.d.ts.map +0 -1
  40. package/dist/createRef.test.js +0 -80
  41. package/dist/createState.test.d.ts +0 -2
  42. package/dist/createState.test.d.ts.map +0 -1
  43. package/dist/createState.test.js +0 -111
  44. package/dist/createView.test.d.ts +0 -2
  45. package/dist/createView.test.d.ts.map +0 -1
  46. package/dist/createView.test.js +0 -203
  47. package/dist/error.test.d.ts +0 -2
  48. package/dist/error.test.d.ts.map +0 -1
  49. package/dist/error.test.js +0 -144
  50. package/dist/integration.test.d.ts +0 -2
  51. package/dist/integration.test.d.ts.map +0 -1
  52. package/dist/integration.test.js +0 -155
  53. package/dist/jsx.d.ts.map +0 -1
  54. package/dist/jsx.js +0 -42
  55. package/dist/observation.test.d.ts +0 -2
  56. package/dist/observation.test.d.ts.map +0 -1
  57. package/dist/observation.test.js +0 -113
  58. package/dist/render-test.d.ts +0 -2
  59. package/dist/render-test.d.ts.map +0 -1
  60. package/dist/render-test.js +0 -21
  61. package/dist/render.d.ts +0 -7
  62. package/dist/render.d.ts.map +0 -1
  63. package/dist/render.js +0 -77
  64. package/dist/suspense.d.ts +0 -25
  65. package/dist/suspense.d.ts.map +0 -1
  66. package/dist/suspense.js +0 -97
  67. package/dist/tests/class.test.d.ts +0 -2
  68. package/dist/tests/class.test.d.ts.map +0 -1
  69. package/dist/tests/class.test.js +0 -185
  70. package/dist/tests/complex-rendering.test.d.ts +0 -2
  71. package/dist/tests/complex-rendering.test.d.ts.map +0 -1
  72. package/dist/tests/complex-rendering.test.js +0 -400
  73. package/dist/tests/component.cleanup.test.d.ts +0 -2
  74. package/dist/tests/component.cleanup.test.d.ts.map +0 -1
  75. package/dist/tests/component.cleanup.test.js +0 -325
  76. package/dist/tests/component.counter.test.d.ts +0 -2
  77. package/dist/tests/component.counter.test.d.ts.map +0 -1
  78. package/dist/tests/component.counter.test.js +0 -124
  79. package/dist/tests/component.interaction.test.d.ts +0 -2
  80. package/dist/tests/component.interaction.test.d.ts.map +0 -1
  81. package/dist/tests/component.interaction.test.js +0 -73
  82. package/dist/tests/component.props.test.d.ts +0 -2
  83. package/dist/tests/component.props.test.d.ts.map +0 -1
  84. package/dist/tests/component.props.test.js +0 -334
  85. package/dist/tests/component.return-types.test.d.ts +0 -2
  86. package/dist/tests/component.return-types.test.d.ts.map +0 -1
  87. package/dist/tests/component.return-types.test.js +0 -357
  88. package/dist/tests/component.state.test.d.ts +0 -2
  89. package/dist/tests/component.state.test.d.ts.map +0 -1
  90. package/dist/tests/component.state.test.js +0 -135
  91. package/dist/tests/component.test.d.ts +0 -2
  92. package/dist/tests/component.test.d.ts.map +0 -1
  93. package/dist/tests/component.test.js +0 -63
  94. package/dist/tests/createAsync.test.d.ts +0 -2
  95. package/dist/tests/createAsync.test.d.ts.map +0 -1
  96. package/dist/tests/createAsync.test.js +0 -110
  97. package/dist/tests/createContext.test.d.ts +0 -2
  98. package/dist/tests/createContext.test.d.ts.map +0 -1
  99. package/dist/tests/createContext.test.js +0 -141
  100. package/dist/tests/createMutation.test.d.ts +0 -2
  101. package/dist/tests/createMutation.test.d.ts.map +0 -1
  102. package/dist/tests/createMutation.test.js +0 -168
  103. package/dist/tests/createQuery.test.d.ts +0 -2
  104. package/dist/tests/createQuery.test.d.ts.map +0 -1
  105. package/dist/tests/createQuery.test.js +0 -156
  106. package/dist/tests/createRef.test.d.ts +0 -2
  107. package/dist/tests/createRef.test.d.ts.map +0 -1
  108. package/dist/tests/createRef.test.js +0 -84
  109. package/dist/tests/createState.test.d.ts +0 -2
  110. package/dist/tests/createState.test.d.ts.map +0 -1
  111. package/dist/tests/createState.test.js +0 -103
  112. package/dist/tests/createView.test.d.ts +0 -2
  113. package/dist/tests/createView.test.d.ts.map +0 -1
  114. package/dist/tests/createView.test.js +0 -203
  115. package/dist/tests/edge-cases.test.d.ts +0 -2
  116. package/dist/tests/edge-cases.test.d.ts.map +0 -1
  117. package/dist/tests/edge-cases.test.js +0 -637
  118. package/dist/tests/error-no-boundary.test.d.ts +0 -2
  119. package/dist/tests/error-no-boundary.test.d.ts.map +0 -1
  120. package/dist/tests/error-no-boundary.test.js +0 -174
  121. package/dist/tests/error.test.d.ts +0 -2
  122. package/dist/tests/error.test.d.ts.map +0 -1
  123. package/dist/tests/error.test.js +0 -199
  124. package/dist/tests/fragment.test.d.ts +0 -2
  125. package/dist/tests/fragment.test.d.ts.map +0 -1
  126. package/dist/tests/fragment.test.js +0 -618
  127. package/dist/tests/integration.test.d.ts +0 -2
  128. package/dist/tests/integration.test.d.ts.map +0 -1
  129. package/dist/tests/integration.test.js +0 -192
  130. package/dist/tests/keys.test.d.ts +0 -2
  131. package/dist/tests/keys.test.d.ts.map +0 -1
  132. package/dist/tests/keys.test.js +0 -293
  133. package/dist/tests/mount.test.d.ts +0 -2
  134. package/dist/tests/mount.test.d.ts.map +0 -1
  135. package/dist/tests/mount.test.js +0 -91
  136. package/dist/tests/observation.test.d.ts +0 -2
  137. package/dist/tests/observation.test.d.ts.map +0 -1
  138. package/dist/tests/observation.test.js +0 -113
  139. package/dist/tests/patch.test.d.ts +0 -2
  140. package/dist/tests/patch.test.d.ts.map +0 -1
  141. package/dist/tests/patch.test.js +0 -498
  142. package/dist/tests/patchChildren.test.d.ts +0 -2
  143. package/dist/tests/patchChildren.test.d.ts.map +0 -1
  144. package/dist/tests/patchChildren.test.js +0 -387
  145. package/dist/tests/primitives.test.d.ts +0 -2
  146. package/dist/tests/primitives.test.d.ts.map +0 -1
  147. package/dist/tests/primitives.test.js +0 -132
  148. package/dist/vdom/class.test.d.ts +0 -2
  149. package/dist/vdom/class.test.d.ts.map +0 -1
  150. package/dist/vdom/class.test.js +0 -143
  151. package/dist/vdom/complex-rendering.test.d.ts +0 -2
  152. package/dist/vdom/complex-rendering.test.d.ts.map +0 -1
  153. package/dist/vdom/complex-rendering.test.js +0 -400
  154. package/dist/vdom/component.cleanup.test.d.ts +0 -2
  155. package/dist/vdom/component.cleanup.test.d.ts.map +0 -1
  156. package/dist/vdom/component.cleanup.test.js +0 -323
  157. package/dist/vdom/component.counter.test.d.ts +0 -2
  158. package/dist/vdom/component.counter.test.d.ts.map +0 -1
  159. package/dist/vdom/component.counter.test.js +0 -124
  160. package/dist/vdom/component.interaction.test.d.ts +0 -2
  161. package/dist/vdom/component.interaction.test.d.ts.map +0 -1
  162. package/dist/vdom/component.interaction.test.js +0 -73
  163. package/dist/vdom/component.props.test.d.ts +0 -2
  164. package/dist/vdom/component.props.test.d.ts.map +0 -1
  165. package/dist/vdom/component.props.test.js +0 -88
  166. package/dist/vdom/component.return-types.test.d.ts +0 -2
  167. package/dist/vdom/component.return-types.test.d.ts.map +0 -1
  168. package/dist/vdom/component.return-types.test.js +0 -357
  169. package/dist/vdom/component.state.test.d.ts +0 -2
  170. package/dist/vdom/component.state.test.d.ts.map +0 -1
  171. package/dist/vdom/component.state.test.js +0 -129
  172. package/dist/vdom/component.test.d.ts +0 -2
  173. package/dist/vdom/component.test.d.ts.map +0 -1
  174. package/dist/vdom/component.test.js +0 -63
  175. package/dist/vdom/edge-cases.test.d.ts +0 -2
  176. package/dist/vdom/edge-cases.test.d.ts.map +0 -1
  177. package/dist/vdom/edge-cases.test.js +0 -637
  178. package/dist/vdom/fragment.test.d.ts +0 -2
  179. package/dist/vdom/fragment.test.d.ts.map +0 -1
  180. package/dist/vdom/fragment.test.js +0 -618
  181. package/dist/vdom/keys.test.d.ts +0 -2
  182. package/dist/vdom/keys.test.d.ts.map +0 -1
  183. package/dist/vdom/keys.test.js +0 -293
  184. package/dist/vdom/mount.test.d.ts +0 -2
  185. package/dist/vdom/mount.test.d.ts.map +0 -1
  186. package/dist/vdom/mount.test.js +0 -91
  187. package/dist/vdom/patch.test.d.ts +0 -2
  188. package/dist/vdom/patch.test.d.ts.map +0 -1
  189. package/dist/vdom/patch.test.js +0 -498
  190. package/dist/vdom/patchChildren.test.d.ts +0 -2
  191. package/dist/vdom/patchChildren.test.d.ts.map +0 -1
  192. package/dist/vdom/patchChildren.test.js +0 -392
  193. package/dist/vdom/primitives.test.d.ts +0 -2
  194. package/dist/vdom/primitives.test.d.ts.map +0 -1
  195. package/dist/vdom/primitives.test.js +0 -132
package/dist/suspense.js DELETED
@@ -1,97 +0,0 @@
1
- import { getCurrentComponent } from "./component";
2
- import { createState } from "./createState";
3
- import { getCurrentObserver, Signal } from "./observation";
4
- export function createSuspense(promises) {
5
- let currentComponent = getCurrentComponent();
6
- if (!currentComponent) {
7
- throw new Error("createSuspense must be used in the setup of a component");
8
- }
9
- const proxy = {};
10
- for (const key in promises) {
11
- const promise = promises[key];
12
- const suspensePromise = isSuspensePromise(promise)
13
- ? promise
14
- : createSuspensePromise(promise);
15
- currentComponent.notifyAsync(suspensePromise);
16
- Object.defineProperty(proxy, key, {
17
- get() {
18
- return suspensePromise.value;
19
- },
20
- });
21
- }
22
- return proxy;
23
- }
24
- function isSuspensePromise(promise) {
25
- return "status" in promise;
26
- }
27
- export function Suspense(props) {
28
- const currentComponent = getCurrentComponent();
29
- const state = createState({
30
- suspendingPromises: [],
31
- });
32
- currentComponent.onAsync((promise) => {
33
- state.suspendingPromises = state.suspendingPromises.concat(promise);
34
- });
35
- return () => {
36
- const isAllResolved = state.suspendingPromises.every((promise) => promise.status === "resolved");
37
- console.log(isAllResolved);
38
- return isAllResolved ? props.children : props.fallback;
39
- };
40
- }
41
- export function createSuspensePromise(promise) {
42
- const signal = new Signal();
43
- const state = {
44
- error: null,
45
- status: "pending",
46
- value: null,
47
- };
48
- Object.defineProperty(promise, "value", {
49
- get() {
50
- const observer = getCurrentObserver();
51
- if (observer) {
52
- observer.subscribeSignal(signal);
53
- }
54
- return state.value;
55
- },
56
- set(newValue) {
57
- state.value = newValue;
58
- signal.notify();
59
- },
60
- });
61
- Object.defineProperty(promise, "error", {
62
- get() {
63
- const observer = getCurrentObserver();
64
- if (observer) {
65
- observer.subscribeSignal(signal);
66
- }
67
- return state.error;
68
- },
69
- });
70
- Object.defineProperty(promise, "status", {
71
- get() {
72
- const observer = getCurrentObserver();
73
- if (observer) {
74
- observer.subscribeSignal(signal);
75
- }
76
- return state.status;
77
- },
78
- });
79
- promise
80
- .then((value) => {
81
- Object.assign(state, {
82
- value,
83
- error: null,
84
- status: "resolved",
85
- });
86
- signal.notify();
87
- })
88
- .catch((error) => {
89
- Object.assign(state, {
90
- value: null,
91
- error: String(error),
92
- status: "rejected",
93
- });
94
- signal.notify();
95
- });
96
- return promise;
97
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=class.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"class.test.d.ts","sourceRoot":"","sources":["../../src/tests/class.test.ts"],"names":[],"mappings":""}
@@ -1,185 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { jsx, render } from "../vdom";
3
- import { createState } from "../createState";
4
- describe("Class Property Support", () => {
5
- it("should map string class to className", () => {
6
- const container = document.createElement("div");
7
- render(jsx("div", { class: "test-class" }), container);
8
- const div = container.querySelector("div");
9
- expect(div?.className).toBe("test-class");
10
- });
11
- it("should handle multiple classes as string", () => {
12
- const container = document.createElement("div");
13
- render(jsx("div", { class: "class-1 class-2 class-3" }), container);
14
- const div = container.querySelector("div");
15
- expect(div?.className).toBe("class-1 class-2 class-3");
16
- });
17
- it("should handle object notation with true values", () => {
18
- const container = document.createElement("div");
19
- render(jsx("div", {
20
- class: {
21
- active: true,
22
- visible: true,
23
- hidden: false,
24
- },
25
- }), container);
26
- const div = container.querySelector("div");
27
- expect(div?.classList.contains("active")).toBe(true);
28
- expect(div?.classList.contains("visible")).toBe(true);
29
- expect(div?.classList.contains("hidden")).toBe(false);
30
- });
31
- it("should handle mixed object notation", () => {
32
- const container = document.createElement("div");
33
- render(jsx("div", {
34
- class: {
35
- "class-1": true,
36
- "class-2": false,
37
- "class-3": true,
38
- "class-4": false,
39
- },
40
- }), container);
41
- const div = container.querySelector("div");
42
- expect(div?.className).toBe("class-1 class-3");
43
- });
44
- it("should handle empty object notation", () => {
45
- const container = document.createElement("div");
46
- render(jsx("div", { class: {} }), container);
47
- const div = container.querySelector("div");
48
- expect(div?.className).toBe("");
49
- expect(div?.hasAttribute("class")).toBe(false);
50
- });
51
- it("should handle all false object notation", () => {
52
- const container = document.createElement("div");
53
- render(jsx("div", {
54
- class: {
55
- "class-1": false,
56
- "class-2": false,
57
- },
58
- }), container);
59
- const div = container.querySelector("div");
60
- expect(div?.className).toBe("");
61
- expect(div?.hasAttribute("class")).toBe(false);
62
- });
63
- it("should update classes when object notation changes", async () => {
64
- const container = document.createElement("div");
65
- let stateFn;
66
- const App = () => {
67
- const state = createState({ isActive: true, isVisible: false });
68
- stateFn = state;
69
- return () => jsx("div", {
70
- class: {
71
- active: state.isActive,
72
- visible: state.isVisible,
73
- },
74
- });
75
- };
76
- render(jsx(App, {}), container);
77
- const div = container.querySelector("div");
78
- expect(div?.classList.contains("active")).toBe(true);
79
- expect(div?.classList.contains("visible")).toBe(false);
80
- stateFn.isActive = false;
81
- stateFn.isVisible = true;
82
- await new Promise((resolve) => setTimeout(resolve, 0));
83
- expect(div?.classList.contains("active")).toBe(false);
84
- expect(div?.classList.contains("visible")).toBe(true);
85
- });
86
- it("should handle hyphenated class names in object notation", () => {
87
- const container = document.createElement("div");
88
- render(jsx("div", {
89
- class: {
90
- "my-custom-class": true,
91
- "another-class-name": true,
92
- "disabled-class": false,
93
- },
94
- }), container);
95
- const div = container.querySelector("div");
96
- expect(div?.classList.contains("my-custom-class")).toBe(true);
97
- expect(div?.classList.contains("another-class-name")).toBe(true);
98
- expect(div?.classList.contains("disabled-class")).toBe(false);
99
- });
100
- it("should prefer class over className when both provided", () => {
101
- const container = document.createElement("div");
102
- render(jsx("div", { class: "from-class", className: "from-className" }), container);
103
- const div = container.querySelector("div");
104
- // class should take precedence
105
- expect(div?.className).toBe("from-class");
106
- });
107
- it("should work with nested components", () => {
108
- const container = document.createElement("div");
109
- const Child = () => {
110
- return () => jsx("span", { class: "child-class" });
111
- };
112
- const Parent = () => {
113
- return () => jsx("div", {
114
- class: "parent-class",
115
- children: jsx(Child, {}),
116
- });
117
- };
118
- render(jsx(Parent, {}), container);
119
- const parentDiv = container.querySelector("div");
120
- const childSpan = container.querySelector("span");
121
- expect(parentDiv?.className).toBe("parent-class");
122
- expect(childSpan?.className).toBe("child-class");
123
- });
124
- it("should handle undefined and null class values", () => {
125
- const container = document.createElement("div");
126
- render(jsx("div", { class: undefined }), container);
127
- const div = container.querySelector("div");
128
- expect(div?.className).toBe("");
129
- expect(div?.hasAttribute("class")).toBe(false);
130
- });
131
- it("should remove class attribute when empty string is provided", () => {
132
- const container = document.createElement("div");
133
- render(jsx("div", { class: "" }), container);
134
- const div = container.querySelector("div");
135
- expect(div?.hasAttribute("class")).toBe(false);
136
- });
137
- it("should remove class attribute when null is provided", () => {
138
- const container = document.createElement("div");
139
- render(jsx("div", { class: null }), container);
140
- const div = container.querySelector("div");
141
- expect(div?.hasAttribute("class")).toBe(false);
142
- });
143
- it("should remove class attribute when object notation results in empty string", () => {
144
- const container = document.createElement("div");
145
- render(jsx("div", {
146
- class: {
147
- active: false,
148
- visible: false,
149
- },
150
- }), container);
151
- const div = container.querySelector("div");
152
- expect(div?.hasAttribute("class")).toBe(false);
153
- });
154
- it("should remove class attribute when updating from non-empty to empty string", async () => {
155
- const container = document.createElement("div");
156
- let stateFn;
157
- const App = () => {
158
- const state = createState({ className: "initial" });
159
- stateFn = state;
160
- return () => jsx("div", { class: state.className });
161
- };
162
- render(jsx(App, {}), container);
163
- const div = container.querySelector("div");
164
- expect(div?.className).toBe("initial");
165
- expect(div?.hasAttribute("class")).toBe(true);
166
- stateFn.className = "";
167
- await new Promise((resolve) => setTimeout(resolve, 0));
168
- expect(div?.hasAttribute("class")).toBe(false);
169
- });
170
- it("should handle dynamic string class updates", async () => {
171
- const container = document.createElement("div");
172
- let stateFn;
173
- const App = () => {
174
- const state = createState({ className: "initial" });
175
- stateFn = state;
176
- return () => jsx("div", { class: state.className });
177
- };
178
- render(jsx(App, {}), container);
179
- const div = container.querySelector("div");
180
- expect(div?.className).toBe("initial");
181
- stateFn.className = "updated";
182
- await new Promise((resolve) => setTimeout(resolve, 0));
183
- expect(div?.className).toBe("updated");
184
- });
185
- });
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=complex-rendering.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"complex-rendering.test.d.ts","sourceRoot":"","sources":["../../src/tests/complex-rendering.test.ts"],"names":[],"mappings":""}