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.
- package/dist/vdom/AbstractVNode.d.ts +24 -2
- package/dist/vdom/AbstractVNode.d.ts.map +1 -1
- package/dist/vdom/AbstractVNode.js +153 -13
- package/dist/vdom/ComponentVNode.d.ts +2 -2
- package/dist/vdom/ComponentVNode.d.ts.map +1 -1
- package/dist/vdom/ComponentVNode.js +11 -13
- package/dist/vdom/ElementVNode.d.ts +2 -8
- package/dist/vdom/ElementVNode.d.ts.map +1 -1
- package/dist/vdom/ElementVNode.js +15 -32
- package/dist/vdom/FragmentVNode.d.ts +2 -2
- package/dist/vdom/FragmentVNode.d.ts.map +1 -1
- package/dist/vdom/FragmentVNode.js +12 -3
- package/dist/vdom/RootVNode.d.ts +2 -2
- package/dist/vdom/RootVNode.d.ts.map +1 -1
- package/dist/vdom/RootVNode.js +7 -5
- package/package.json +1 -1
- package/dist/component.d.ts +0 -38
- package/dist/component.d.ts.map +0 -1
- package/dist/component.js +0 -130
- package/dist/context.d.ts +0 -5
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js +0 -29
- package/dist/createAsync.test.d.ts +0 -2
- package/dist/createAsync.test.d.ts.map +0 -1
- package/dist/createAsync.test.js +0 -110
- package/dist/createAsyncState.d.ts +0 -16
- package/dist/createAsyncState.d.ts.map +0 -1
- package/dist/createAsyncState.js +0 -24
- package/dist/createContext.test.d.ts +0 -2
- package/dist/createContext.test.d.ts.map +0 -1
- package/dist/createContext.test.js +0 -136
- package/dist/createMutation.test.d.ts +0 -2
- package/dist/createMutation.test.d.ts.map +0 -1
- package/dist/createMutation.test.js +0 -168
- package/dist/createQuery.test.d.ts +0 -2
- package/dist/createQuery.test.d.ts.map +0 -1
- package/dist/createQuery.test.js +0 -156
- package/dist/createRef.test.d.ts +0 -2
- package/dist/createRef.test.d.ts.map +0 -1
- package/dist/createRef.test.js +0 -80
- package/dist/createState.test.d.ts +0 -2
- package/dist/createState.test.d.ts.map +0 -1
- package/dist/createState.test.js +0 -111
- package/dist/createView.test.d.ts +0 -2
- package/dist/createView.test.d.ts.map +0 -1
- package/dist/createView.test.js +0 -203
- package/dist/error.test.d.ts +0 -2
- package/dist/error.test.d.ts.map +0 -1
- package/dist/error.test.js +0 -144
- package/dist/integration.test.d.ts +0 -2
- package/dist/integration.test.d.ts.map +0 -1
- package/dist/integration.test.js +0 -155
- package/dist/jsx.d.ts.map +0 -1
- package/dist/jsx.js +0 -42
- package/dist/observation.test.d.ts +0 -2
- package/dist/observation.test.d.ts.map +0 -1
- package/dist/observation.test.js +0 -113
- package/dist/render-test.d.ts +0 -2
- package/dist/render-test.d.ts.map +0 -1
- package/dist/render-test.js +0 -21
- package/dist/render.d.ts +0 -7
- package/dist/render.d.ts.map +0 -1
- package/dist/render.js +0 -77
- package/dist/suspense.d.ts +0 -25
- package/dist/suspense.d.ts.map +0 -1
- package/dist/suspense.js +0 -97
- package/dist/tests/class.test.d.ts +0 -2
- package/dist/tests/class.test.d.ts.map +0 -1
- package/dist/tests/class.test.js +0 -185
- package/dist/tests/complex-rendering.test.d.ts +0 -2
- package/dist/tests/complex-rendering.test.d.ts.map +0 -1
- package/dist/tests/complex-rendering.test.js +0 -400
- package/dist/tests/component.cleanup.test.d.ts +0 -2
- package/dist/tests/component.cleanup.test.d.ts.map +0 -1
- package/dist/tests/component.cleanup.test.js +0 -325
- package/dist/tests/component.counter.test.d.ts +0 -2
- package/dist/tests/component.counter.test.d.ts.map +0 -1
- package/dist/tests/component.counter.test.js +0 -124
- package/dist/tests/component.interaction.test.d.ts +0 -2
- package/dist/tests/component.interaction.test.d.ts.map +0 -1
- package/dist/tests/component.interaction.test.js +0 -73
- package/dist/tests/component.props.test.d.ts +0 -2
- package/dist/tests/component.props.test.d.ts.map +0 -1
- package/dist/tests/component.props.test.js +0 -334
- package/dist/tests/component.return-types.test.d.ts +0 -2
- package/dist/tests/component.return-types.test.d.ts.map +0 -1
- package/dist/tests/component.return-types.test.js +0 -357
- package/dist/tests/component.state.test.d.ts +0 -2
- package/dist/tests/component.state.test.d.ts.map +0 -1
- package/dist/tests/component.state.test.js +0 -135
- package/dist/tests/component.test.d.ts +0 -2
- package/dist/tests/component.test.d.ts.map +0 -1
- package/dist/tests/component.test.js +0 -63
- package/dist/tests/createAsync.test.d.ts +0 -2
- package/dist/tests/createAsync.test.d.ts.map +0 -1
- package/dist/tests/createAsync.test.js +0 -110
- package/dist/tests/createContext.test.d.ts +0 -2
- package/dist/tests/createContext.test.d.ts.map +0 -1
- package/dist/tests/createContext.test.js +0 -141
- package/dist/tests/createMutation.test.d.ts +0 -2
- package/dist/tests/createMutation.test.d.ts.map +0 -1
- package/dist/tests/createMutation.test.js +0 -168
- package/dist/tests/createQuery.test.d.ts +0 -2
- package/dist/tests/createQuery.test.d.ts.map +0 -1
- package/dist/tests/createQuery.test.js +0 -156
- package/dist/tests/createRef.test.d.ts +0 -2
- package/dist/tests/createRef.test.d.ts.map +0 -1
- package/dist/tests/createRef.test.js +0 -84
- package/dist/tests/createState.test.d.ts +0 -2
- package/dist/tests/createState.test.d.ts.map +0 -1
- package/dist/tests/createState.test.js +0 -103
- package/dist/tests/createView.test.d.ts +0 -2
- package/dist/tests/createView.test.d.ts.map +0 -1
- package/dist/tests/createView.test.js +0 -203
- package/dist/tests/edge-cases.test.d.ts +0 -2
- package/dist/tests/edge-cases.test.d.ts.map +0 -1
- package/dist/tests/edge-cases.test.js +0 -637
- package/dist/tests/error-no-boundary.test.d.ts +0 -2
- package/dist/tests/error-no-boundary.test.d.ts.map +0 -1
- package/dist/tests/error-no-boundary.test.js +0 -174
- package/dist/tests/error.test.d.ts +0 -2
- package/dist/tests/error.test.d.ts.map +0 -1
- package/dist/tests/error.test.js +0 -199
- package/dist/tests/fragment.test.d.ts +0 -2
- package/dist/tests/fragment.test.d.ts.map +0 -1
- package/dist/tests/fragment.test.js +0 -618
- package/dist/tests/integration.test.d.ts +0 -2
- package/dist/tests/integration.test.d.ts.map +0 -1
- package/dist/tests/integration.test.js +0 -192
- package/dist/tests/keys.test.d.ts +0 -2
- package/dist/tests/keys.test.d.ts.map +0 -1
- package/dist/tests/keys.test.js +0 -293
- package/dist/tests/mount.test.d.ts +0 -2
- package/dist/tests/mount.test.d.ts.map +0 -1
- package/dist/tests/mount.test.js +0 -91
- package/dist/tests/observation.test.d.ts +0 -2
- package/dist/tests/observation.test.d.ts.map +0 -1
- package/dist/tests/observation.test.js +0 -113
- package/dist/tests/patch.test.d.ts +0 -2
- package/dist/tests/patch.test.d.ts.map +0 -1
- package/dist/tests/patch.test.js +0 -498
- package/dist/tests/patchChildren.test.d.ts +0 -2
- package/dist/tests/patchChildren.test.d.ts.map +0 -1
- package/dist/tests/patchChildren.test.js +0 -387
- package/dist/tests/primitives.test.d.ts +0 -2
- package/dist/tests/primitives.test.d.ts.map +0 -1
- package/dist/tests/primitives.test.js +0 -132
- package/dist/vdom/class.test.d.ts +0 -2
- package/dist/vdom/class.test.d.ts.map +0 -1
- package/dist/vdom/class.test.js +0 -143
- package/dist/vdom/complex-rendering.test.d.ts +0 -2
- package/dist/vdom/complex-rendering.test.d.ts.map +0 -1
- package/dist/vdom/complex-rendering.test.js +0 -400
- package/dist/vdom/component.cleanup.test.d.ts +0 -2
- package/dist/vdom/component.cleanup.test.d.ts.map +0 -1
- package/dist/vdom/component.cleanup.test.js +0 -323
- package/dist/vdom/component.counter.test.d.ts +0 -2
- package/dist/vdom/component.counter.test.d.ts.map +0 -1
- package/dist/vdom/component.counter.test.js +0 -124
- package/dist/vdom/component.interaction.test.d.ts +0 -2
- package/dist/vdom/component.interaction.test.d.ts.map +0 -1
- package/dist/vdom/component.interaction.test.js +0 -73
- package/dist/vdom/component.props.test.d.ts +0 -2
- package/dist/vdom/component.props.test.d.ts.map +0 -1
- package/dist/vdom/component.props.test.js +0 -88
- package/dist/vdom/component.return-types.test.d.ts +0 -2
- package/dist/vdom/component.return-types.test.d.ts.map +0 -1
- package/dist/vdom/component.return-types.test.js +0 -357
- package/dist/vdom/component.state.test.d.ts +0 -2
- package/dist/vdom/component.state.test.d.ts.map +0 -1
- package/dist/vdom/component.state.test.js +0 -129
- package/dist/vdom/component.test.d.ts +0 -2
- package/dist/vdom/component.test.d.ts.map +0 -1
- package/dist/vdom/component.test.js +0 -63
- package/dist/vdom/edge-cases.test.d.ts +0 -2
- package/dist/vdom/edge-cases.test.d.ts.map +0 -1
- package/dist/vdom/edge-cases.test.js +0 -637
- package/dist/vdom/fragment.test.d.ts +0 -2
- package/dist/vdom/fragment.test.d.ts.map +0 -1
- package/dist/vdom/fragment.test.js +0 -618
- package/dist/vdom/keys.test.d.ts +0 -2
- package/dist/vdom/keys.test.d.ts.map +0 -1
- package/dist/vdom/keys.test.js +0 -293
- package/dist/vdom/mount.test.d.ts +0 -2
- package/dist/vdom/mount.test.d.ts.map +0 -1
- package/dist/vdom/mount.test.js +0 -91
- package/dist/vdom/patch.test.d.ts +0 -2
- package/dist/vdom/patch.test.d.ts.map +0 -1
- package/dist/vdom/patch.test.js +0 -498
- package/dist/vdom/patchChildren.test.d.ts +0 -2
- package/dist/vdom/patchChildren.test.d.ts.map +0 -1
- package/dist/vdom/patchChildren.test.js +0 -392
- package/dist/vdom/primitives.test.d.ts +0 -2
- package/dist/vdom/primitives.test.d.ts.map +0 -1
- 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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"class.test.d.ts","sourceRoot":"","sources":["../../src/tests/class.test.ts"],"names":[],"mappings":""}
|
package/dist/tests/class.test.js
DELETED
|
@@ -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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"complex-rendering.test.d.ts","sourceRoot":"","sources":["../../src/tests/complex-rendering.test.ts"],"names":[],"mappings":""}
|