j-templates 7.0.77 → 7.0.79
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/DOM/domNodeConfig.js +24 -8
- package/DOM/elements.d.ts +49 -25
- package/DOM/elements.js +4 -1
- package/Node/component.d.ts +4 -4
- package/Node/vNode.d.ts +3 -3
- package/Node/vNode.js +76 -97
- package/Node/vNode.types.d.ts +12 -2
- package/Node/vNode.types.js +4 -0
- package/package.json +1 -1
package/DOM/domNodeConfig.js
CHANGED
|
@@ -48,6 +48,16 @@ function wrapPriorityUpdates(callback) {
|
|
|
48
48
|
highPriority = currentPriority;
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
|
+
function getHTMLNode(from, current) {
|
|
52
|
+
if (typeof from === "string") {
|
|
53
|
+
if (current?.nodeType === Node.TEXT_NODE) {
|
|
54
|
+
exports.DOMNodeConfig.setText(current, from);
|
|
55
|
+
return current;
|
|
56
|
+
}
|
|
57
|
+
return exports.DOMNodeConfig.createTextNode(from);
|
|
58
|
+
}
|
|
59
|
+
return from;
|
|
60
|
+
}
|
|
51
61
|
exports.DOMNodeConfig = {
|
|
52
62
|
createNode(type, namespace) {
|
|
53
63
|
if (type === "text")
|
|
@@ -136,8 +146,10 @@ exports.DOMNodeConfig = {
|
|
|
136
146
|
},
|
|
137
147
|
reconcileChildren(target, children) {
|
|
138
148
|
if (!target.firstChild) {
|
|
139
|
-
for (let x = 0; x < children.length; x++)
|
|
140
|
-
|
|
149
|
+
for (let x = 0; x < children.length; x++) {
|
|
150
|
+
const child = getHTMLNode(children[x]);
|
|
151
|
+
target.appendChild(child);
|
|
152
|
+
}
|
|
141
153
|
return;
|
|
142
154
|
}
|
|
143
155
|
if (children.length === 0) {
|
|
@@ -148,7 +160,8 @@ exports.DOMNodeConfig = {
|
|
|
148
160
|
let x = 0;
|
|
149
161
|
let removed = false;
|
|
150
162
|
for (; actualNode && x < children.length; x++) {
|
|
151
|
-
const
|
|
163
|
+
const child = children[x];
|
|
164
|
+
let expectedNode = getHTMLNode(child, actualNode);
|
|
152
165
|
if (!removed && actualNode !== expectedNode) {
|
|
153
166
|
const remove = actualNode;
|
|
154
167
|
actualNode = actualNode.nextSibling;
|
|
@@ -165,14 +178,17 @@ exports.DOMNodeConfig = {
|
|
|
165
178
|
}
|
|
166
179
|
while (target.lastChild !== children[x - 1])
|
|
167
180
|
target.removeChild(target.lastChild);
|
|
168
|
-
for (; x < children.length; x++)
|
|
169
|
-
|
|
181
|
+
for (; x < children.length; x++) {
|
|
182
|
+
const child = getHTMLNode(children[x]);
|
|
183
|
+
target.appendChild(child);
|
|
184
|
+
}
|
|
170
185
|
},
|
|
171
186
|
reconcileChild(target, child) {
|
|
172
|
-
|
|
187
|
+
const newChild = getHTMLNode(child, target.firstChild);
|
|
188
|
+
if (target.firstChild === newChild)
|
|
173
189
|
return;
|
|
174
|
-
target.appendChild(
|
|
175
|
-
while (target.firstChild !==
|
|
190
|
+
target.appendChild(newChild);
|
|
191
|
+
while (target.firstChild !== newChild)
|
|
176
192
|
target.removeChild(target.firstChild);
|
|
177
193
|
},
|
|
178
194
|
};
|
package/DOM/elements.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export declare const div: <T>(config: {
|
|
|
5
5
|
}>;
|
|
6
6
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
7
7
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
8
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
8
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
9
9
|
export declare const a: <T>(config: {
|
|
10
10
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
11
11
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -13,7 +13,7 @@ export declare const a: <T>(config: {
|
|
|
13
13
|
}>;
|
|
14
14
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
15
15
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
16
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
16
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
17
17
|
export declare const b: <T>(config: {
|
|
18
18
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
19
19
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -21,7 +21,7 @@ export declare const b: <T>(config: {
|
|
|
21
21
|
}>;
|
|
22
22
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
23
23
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
24
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
24
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
25
25
|
export declare const button: <T>(config: {
|
|
26
26
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLButtonElement>>;
|
|
27
27
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -29,7 +29,7 @@ export declare const button: <T>(config: {
|
|
|
29
29
|
}>;
|
|
30
30
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
31
31
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
32
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
32
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
33
33
|
export declare const h1: <T>(config: {
|
|
34
34
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
35
35
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -37,7 +37,7 @@ export declare const h1: <T>(config: {
|
|
|
37
37
|
}>;
|
|
38
38
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
39
39
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
40
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
40
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
41
41
|
export declare const h2: <T>(config: {
|
|
42
42
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
43
43
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -45,7 +45,7 @@ export declare const h2: <T>(config: {
|
|
|
45
45
|
}>;
|
|
46
46
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
47
47
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
48
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
48
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
49
49
|
export declare const h3: <T>(config: {
|
|
50
50
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
51
51
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -53,7 +53,7 @@ export declare const h3: <T>(config: {
|
|
|
53
53
|
}>;
|
|
54
54
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
55
55
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
56
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
56
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
57
57
|
export declare const input: <T>(config: {
|
|
58
58
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLInputElement>>;
|
|
59
59
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -61,7 +61,7 @@ export declare const input: <T>(config: {
|
|
|
61
61
|
}>;
|
|
62
62
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
63
63
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
64
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
64
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
65
65
|
export declare const textarea: <T>(config: {
|
|
66
66
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLTextAreaElement>>;
|
|
67
67
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -69,7 +69,7 @@ export declare const textarea: <T>(config: {
|
|
|
69
69
|
}>;
|
|
70
70
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
71
71
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
72
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
72
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
73
73
|
export declare const span: <T>(config: {
|
|
74
74
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
75
75
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -77,7 +77,7 @@ export declare const span: <T>(config: {
|
|
|
77
77
|
}>;
|
|
78
78
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
79
79
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
80
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
80
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
81
81
|
export declare const table: <T>(config: {
|
|
82
82
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
83
83
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -85,7 +85,7 @@ export declare const table: <T>(config: {
|
|
|
85
85
|
}>;
|
|
86
86
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
87
87
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
88
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
88
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
89
89
|
export declare const thead: <T>(config: {
|
|
90
90
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
91
91
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -93,7 +93,7 @@ export declare const thead: <T>(config: {
|
|
|
93
93
|
}>;
|
|
94
94
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
95
95
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
96
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
96
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
97
97
|
export declare const th: <T>(config: {
|
|
98
98
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
99
99
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -101,7 +101,7 @@ export declare const th: <T>(config: {
|
|
|
101
101
|
}>;
|
|
102
102
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
103
103
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
104
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
104
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
105
105
|
export declare const tbody: <T>(config: {
|
|
106
106
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
107
107
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -109,7 +109,7 @@ export declare const tbody: <T>(config: {
|
|
|
109
109
|
}>;
|
|
110
110
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
111
111
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
112
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
112
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
113
113
|
export declare const tr: <T>(config: {
|
|
114
114
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
115
115
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -117,7 +117,7 @@ export declare const tr: <T>(config: {
|
|
|
117
117
|
}>;
|
|
118
118
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
119
119
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
120
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
120
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
121
121
|
export declare const td: <T>(config: {
|
|
122
122
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
123
123
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -125,7 +125,7 @@ export declare const td: <T>(config: {
|
|
|
125
125
|
}>;
|
|
126
126
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
127
127
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
128
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
128
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
129
129
|
export declare const img: <T>(config: {
|
|
130
130
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLImageElement>>;
|
|
131
131
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -133,7 +133,7 @@ export declare const img: <T>(config: {
|
|
|
133
133
|
}>;
|
|
134
134
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
135
135
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
136
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
136
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
137
137
|
export declare const video: <T>(config: {
|
|
138
138
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLVideoElement>>;
|
|
139
139
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -141,7 +141,7 @@ export declare const video: <T>(config: {
|
|
|
141
141
|
}>;
|
|
142
142
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
143
143
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
144
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
144
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
145
145
|
export declare const select: <T>(config: {
|
|
146
146
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLSelectElement>>;
|
|
147
147
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -149,7 +149,7 @@ export declare const select: <T>(config: {
|
|
|
149
149
|
}>;
|
|
150
150
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
151
151
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
152
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
152
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
153
153
|
export declare const option: <T>(config: {
|
|
154
154
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLOptionElement>>;
|
|
155
155
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -157,7 +157,7 @@ export declare const option: <T>(config: {
|
|
|
157
157
|
}>;
|
|
158
158
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
159
159
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
160
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
160
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
161
161
|
export declare const aside: <T>(config: {
|
|
162
162
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
163
163
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -165,7 +165,7 @@ export declare const aside: <T>(config: {
|
|
|
165
165
|
}>;
|
|
166
166
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
167
167
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
168
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
168
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
169
169
|
export declare const p: <T>(config: {
|
|
170
170
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
171
171
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -173,7 +173,7 @@ export declare const p: <T>(config: {
|
|
|
173
173
|
}>;
|
|
174
174
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
175
175
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
176
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
176
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
177
177
|
export declare const label: <T>(config: {
|
|
178
178
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
179
179
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -181,7 +181,7 @@ export declare const label: <T>(config: {
|
|
|
181
181
|
}>;
|
|
182
182
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
183
183
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
184
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
184
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
185
185
|
export declare const pre: <T>(config: {
|
|
186
186
|
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
187
187
|
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
@@ -189,5 +189,29 @@ export declare const pre: <T>(config: {
|
|
|
189
189
|
}>;
|
|
190
190
|
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
191
191
|
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
192
|
-
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").
|
|
193
|
-
export declare const
|
|
192
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
193
|
+
export declare const ul: <T>(config: {
|
|
194
|
+
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
195
|
+
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
196
|
+
[name: string]: string;
|
|
197
|
+
}>;
|
|
198
|
+
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
199
|
+
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
200
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
201
|
+
export declare const ol: <T>(config: {
|
|
202
|
+
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
203
|
+
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
204
|
+
[name: string]: string;
|
|
205
|
+
}>;
|
|
206
|
+
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
207
|
+
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
208
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
209
|
+
export declare const li: <T>(config: {
|
|
210
|
+
props?: import("../Node/vNode.types").FunctionOr<import("../Utils/utils.types").RecursivePartial<HTMLElement>>;
|
|
211
|
+
attrs?: import("../Node/vNode.types").FunctionOr<{
|
|
212
|
+
[name: string]: string;
|
|
213
|
+
}>;
|
|
214
|
+
on?: import("../Node/vNode.types").FunctionOr<import("../Node/vNode.types").vNodeEvents<HTMLElementEventMap>>;
|
|
215
|
+
data?: () => T | T[] | Promise<T[]> | Promise<T>;
|
|
216
|
+
}, children?: import("../Node/vNode.types").vNode[] | import("../Node/vNode.types").vNodeChildrenFunction<T>) => import("../Node/vNode.types").vElementNode;
|
|
217
|
+
export declare const text: (callback: () => string) => import("../Node/vNode.types").vElementNode;
|
package/DOM/elements.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.text = exports.pre = exports.label = exports.p = exports.aside = exports.option = exports.select = exports.video = exports.img = exports.td = exports.tr = exports.tbody = exports.th = exports.thead = exports.table = exports.span = exports.textarea = exports.input = exports.h3 = exports.h2 = exports.h1 = exports.button = exports.b = exports.a = exports.div = void 0;
|
|
3
|
+
exports.text = exports.li = exports.ol = exports.ul = exports.pre = exports.label = exports.p = exports.aside = exports.option = exports.select = exports.video = exports.img = exports.td = exports.tr = exports.tbody = exports.th = exports.thead = exports.table = exports.span = exports.textarea = exports.input = exports.h3 = exports.h2 = exports.h1 = exports.button = exports.b = exports.a = exports.div = void 0;
|
|
4
4
|
const vNode_1 = require("../Node/vNode");
|
|
5
5
|
exports.div = vNode_1.vNode.ToFunction("div");
|
|
6
6
|
exports.a = vNode_1.vNode.ToFunction("a");
|
|
@@ -26,6 +26,9 @@ exports.aside = vNode_1.vNode.ToFunction("aside");
|
|
|
26
26
|
exports.p = vNode_1.vNode.ToFunction("p");
|
|
27
27
|
exports.label = vNode_1.vNode.ToFunction("label");
|
|
28
28
|
exports.pre = vNode_1.vNode.ToFunction("pre");
|
|
29
|
+
exports.ul = vNode_1.vNode.ToFunction("ul");
|
|
30
|
+
exports.ol = vNode_1.vNode.ToFunction("ol");
|
|
31
|
+
exports.li = vNode_1.vNode.ToFunction("li");
|
|
29
32
|
const textElement = vNode_1.vNode.ToFunction("text");
|
|
30
33
|
const text = function (callback) {
|
|
31
34
|
return textElement({ props: () => ({ nodeValue: callback() }) });
|
package/Node/component.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ComponentEvents } from "./component.types";
|
|
2
|
-
import { FunctionOr, vNode as vNodeType } from "./vNode.types";
|
|
2
|
+
import { FunctionOr, vNode as vNodeType, vElementNode } from "./vNode.types";
|
|
3
3
|
import { RecursivePartial } from "../Utils/utils.types";
|
|
4
4
|
import { IObservableScope } from "../Store/Tree/observableScope";
|
|
5
5
|
/**
|
|
@@ -33,12 +33,12 @@ export declare class Component<D = void, T = void, E = {}> {
|
|
|
33
33
|
/**
|
|
34
34
|
* Accessor for the component's virtual node.
|
|
35
35
|
*/
|
|
36
|
-
protected get VNode():
|
|
36
|
+
protected get VNode(): vElementNode;
|
|
37
37
|
/**
|
|
38
38
|
* Accessor for the component's template collection.
|
|
39
39
|
*/
|
|
40
40
|
protected get Templates(): T;
|
|
41
|
-
constructor(vNode:
|
|
41
|
+
constructor(vNode: vElementNode, config: vComponentConfig<D, E>, templates: T);
|
|
42
42
|
/**
|
|
43
43
|
* Returns the component's rendered vNode(s).
|
|
44
44
|
* Override to provide custom rendering logic.
|
|
@@ -73,7 +73,7 @@ export declare namespace Component {
|
|
|
73
73
|
* Function wraps the Component as a function that can be used to create vNode objects
|
|
74
74
|
* and generate templates.
|
|
75
75
|
*/
|
|
76
|
-
function ToFunction<D, T, E, P = HTMLElement>(type: string, constructor: typeof Component<D, T, E>, namespace?: string): (config: vComponentConfig<D, E, P>, templates?: T) =>
|
|
76
|
+
function ToFunction<D, T, E, P = HTMLElement>(type: string, constructor: typeof Component<D, T, E>, namespace?: string): (config: vComponentConfig<D, E, P>, templates?: T) => vElementNode;
|
|
77
77
|
/**
|
|
78
78
|
* Function registers the Component as a WebComponent as the provided name.
|
|
79
79
|
*/
|
package/Node/vNode.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RecursivePartial } from "../Utils/utils.types";
|
|
2
|
-
import { vNode as vNodeType, vNodeDefinition, FunctionOr, vNodeEvents, vNodeChildrenFunction } from "./vNode.types";
|
|
2
|
+
import { vNode as vNodeType, vNodeDefinition, FunctionOr, vNodeEvents, vNodeChildrenFunction, vElementNode } from "./vNode.types";
|
|
3
3
|
type vNodeConfig<P = HTMLElement, E = HTMLElementEventMap, T = never> = {
|
|
4
4
|
props?: FunctionOr<RecursivePartial<P>>;
|
|
5
5
|
attrs?: FunctionOr<{
|
|
@@ -9,13 +9,13 @@ type vNodeConfig<P = HTMLElement, E = HTMLElementEventMap, T = never> = {
|
|
|
9
9
|
data?: () => T | Array<T> | Promise<Array<T>> | Promise<T>;
|
|
10
10
|
};
|
|
11
11
|
export declare namespace vNode {
|
|
12
|
-
function Create<P = HTMLElement, E = HTMLElementEventMap, T = never>(definition: vNodeDefinition<P, E, T>):
|
|
12
|
+
function Create<P = HTMLElement, E = HTMLElementEventMap, T = never>(definition: vNodeDefinition<P, E, T>): vElementNode;
|
|
13
13
|
function CreateText(text: string): vNodeType;
|
|
14
14
|
function Init(vnode: vNodeType): void;
|
|
15
15
|
function InitAll(vnodes: vNodeType[]): void;
|
|
16
16
|
function Destroy(vnode: vNodeType): void;
|
|
17
17
|
function DestroyAll(vnodes: vNodeType[]): void;
|
|
18
|
-
function ToFunction<P = HTMLElement, E = HTMLElementEventMap>(type: string, namespace?: string): <T>(config: vNodeConfig<P, E, T>, children?: vNodeType[] | vNodeChildrenFunction<T>) =>
|
|
18
|
+
function ToFunction<P = HTMLElement, E = HTMLElementEventMap>(type: string, namespace?: string): <T>(config: vNodeConfig<P, E, T>, children?: vNodeType[] | vNodeChildrenFunction<T>) => vElementNode;
|
|
19
19
|
function Attach(node: any, vnode: vNodeType): vNodeType;
|
|
20
20
|
}
|
|
21
21
|
export {};
|
package/Node/vNode.js
CHANGED
|
@@ -8,6 +8,7 @@ const functions_1 = require("../Utils/functions");
|
|
|
8
8
|
const injector_1 = require("../Utils/injector");
|
|
9
9
|
const thread_1 = require("../Utils/thread");
|
|
10
10
|
const nodeConfig_1 = require("./nodeConfig");
|
|
11
|
+
const vNode_types_1 = require("./vNode.types");
|
|
11
12
|
var vNode;
|
|
12
13
|
(function (vNode) {
|
|
13
14
|
function Create(definition) {
|
|
@@ -43,7 +44,7 @@ var vNode;
|
|
|
43
44
|
}
|
|
44
45
|
vNode.CreateText = CreateText;
|
|
45
46
|
function Init(vnode) {
|
|
46
|
-
if (vnode.definition === null)
|
|
47
|
+
if ((0, vNode_types_1.isStringNode)(vnode) || vnode.definition === null)
|
|
47
48
|
return;
|
|
48
49
|
InitNode(vnode);
|
|
49
50
|
}
|
|
@@ -54,7 +55,7 @@ var vNode;
|
|
|
54
55
|
}
|
|
55
56
|
vNode.InitAll = InitAll;
|
|
56
57
|
function Destroy(vnode) {
|
|
57
|
-
if (vnode.destroyed)
|
|
58
|
+
if ((0, vNode_types_1.isStringNode)(vnode) || vnode.destroyed)
|
|
58
59
|
return;
|
|
59
60
|
vnode.destroyed = true;
|
|
60
61
|
vnode.component?.Destroy();
|
|
@@ -181,22 +182,28 @@ function CreateChildrenScope(vnode, children, data = DefaultData) {
|
|
|
181
182
|
return Store_1.ObservableScope.Create(WrapChildren(vnode.injector, children, data));
|
|
182
183
|
}
|
|
183
184
|
function WrapChildren(injector, children, data) {
|
|
184
|
-
let nodeArray
|
|
185
|
+
let nodeArray;
|
|
185
186
|
return function () {
|
|
186
|
-
const nextData = ToArray(data());
|
|
187
|
+
const nextData = data === DefaultData ? data() : ToArray(data());
|
|
187
188
|
switch (nextData.length) {
|
|
188
189
|
case 0: {
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
190
|
+
if (nodeArray !== undefined) {
|
|
191
|
+
for (let x = 0; x < nodeArray.length; x++) {
|
|
192
|
+
vNode.DestroyAll(nodeArray[x][1]);
|
|
193
|
+
Store_1.ObservableScope.Destroy(nodeArray[x][2]);
|
|
194
|
+
}
|
|
195
|
+
nodeArray = [];
|
|
192
196
|
}
|
|
193
|
-
|
|
197
|
+
break;
|
|
194
198
|
}
|
|
195
199
|
default: {
|
|
196
|
-
if (nodeArray
|
|
200
|
+
if (nodeArray === undefined)
|
|
201
|
+
nodeArray = InitializeNextNodes(injector, children, nextData);
|
|
202
|
+
else if (nodeArray.length < 11)
|
|
197
203
|
nodeArray = EvaluateNextNodesSmall(injector, children, nextData, nodeArray);
|
|
198
204
|
else
|
|
199
205
|
nodeArray = EvaluateNextNodesLarge(injector, children, nextData, nodeArray);
|
|
206
|
+
break;
|
|
200
207
|
}
|
|
201
208
|
}
|
|
202
209
|
return nodeArray;
|
|
@@ -209,54 +216,61 @@ function ToArray(result) {
|
|
|
209
216
|
return result;
|
|
210
217
|
return [result];
|
|
211
218
|
}
|
|
212
|
-
function
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
219
|
+
function GetNextNodeRow(data, injector, getNextChildren, scope) {
|
|
220
|
+
scope ??=
|
|
221
|
+
data === undefined
|
|
222
|
+
? null
|
|
223
|
+
: Store_1.ObservableScope.Create(function () {
|
|
224
|
+
const children = injector_1.Injector.Scope(injector, getNextChildren, data);
|
|
225
|
+
return CreateNodeArray(children);
|
|
226
|
+
});
|
|
227
|
+
const children = scope === null
|
|
228
|
+
? CreateNodeArray(injector_1.Injector.Scope(injector, getNextChildren, undefined))
|
|
229
|
+
: Store_1.ObservableScope.Value(scope);
|
|
230
|
+
return [data, children, scope];
|
|
231
|
+
}
|
|
232
|
+
function InitializeNextNodes(injector, getNextChildren, nextData) {
|
|
224
233
|
const nextNodes = new Array(nextData.length);
|
|
225
234
|
for (let x = 0; x < nextData.length; x++) {
|
|
226
235
|
const data = nextData[x];
|
|
227
|
-
|
|
228
|
-
for (; i < nodeArray.length &&
|
|
229
|
-
(nodeArray[i] === null || nodeArray[i][0] !== data); i++) { }
|
|
230
|
-
if (i !== nodeArray.length) {
|
|
231
|
-
if (nodeArray[i][2]) {
|
|
232
|
-
const scope = nodeArray[i][2];
|
|
233
|
-
const value = scope.value;
|
|
234
|
-
const updatedValue = Store_1.ObservableScope.Value(scope);
|
|
235
|
-
if (value !== updatedValue)
|
|
236
|
-
nodeArray[i][1] = CreateNodeArray(updatedValue);
|
|
237
|
-
}
|
|
238
|
-
nextNodes[x] = nodeArray[i];
|
|
239
|
-
nodeArray[i] = null;
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
const scope = Store_1.ObservableScope.Create(function () {
|
|
243
|
-
return injector_1.Injector.Scope(injector, getNextChildren, data);
|
|
244
|
-
});
|
|
245
|
-
nextNodes[x] = [
|
|
246
|
-
data,
|
|
247
|
-
CreateNodeArray(Store_1.ObservableScope.Value(scope)),
|
|
248
|
-
scope,
|
|
249
|
-
];
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
for (let x = 0; x < nodeArray.length; x++) {
|
|
253
|
-
if (nodeArray[x] !== null) {
|
|
254
|
-
vNode.DestroyAll(nodeArray[x][1]);
|
|
255
|
-
Store_1.ObservableScope.Destroy(nodeArray[x][2]);
|
|
256
|
-
}
|
|
236
|
+
nextNodes[x] = GetNextNodeRow(data, injector, getNextChildren);
|
|
257
237
|
}
|
|
258
238
|
return nextNodes;
|
|
259
239
|
}
|
|
240
|
+
function GetNextNodeRowSmall(injector, getNextChildren, nodeArray, data) {
|
|
241
|
+
let i = 0;
|
|
242
|
+
for (; i < nodeArray.length && (nodeArray[i] === null || nodeArray[i][0] !== data); i++) { }
|
|
243
|
+
if (i === nodeArray.length)
|
|
244
|
+
return GetNextNodeRow(data, injector, getNextChildren);
|
|
245
|
+
const nextNodeRow = GetNextNodeRow(data, injector, getNextChildren, nodeArray[i][2]);
|
|
246
|
+
if (nodeArray[i][1] !== nextNodeRow[1])
|
|
247
|
+
vNode.DestroyAll(nodeArray[i][1]);
|
|
248
|
+
nodeArray[i] = null;
|
|
249
|
+
return nextNodeRow;
|
|
250
|
+
}
|
|
251
|
+
function EvaluateNextNodesSmall(injector, getNextChildren, nextData, nodeArray) {
|
|
252
|
+
const nextNodes = new Array(nextData.length);
|
|
253
|
+
for (let x = 0; x < nextData.length; x++)
|
|
254
|
+
nextNodes[x] = GetNextNodeRowSmall(injector, getNextChildren, nodeArray, nextData[x]);
|
|
255
|
+
return nextNodes;
|
|
256
|
+
}
|
|
257
|
+
function GetNextNodeRowLarge(injector, getNextChildren, nodeRowMap, data) {
|
|
258
|
+
const currentChildren = nodeRowMap.get(data);
|
|
259
|
+
let currentChildIndex = currentChildren ? currentChildren.length - 1 : -1;
|
|
260
|
+
for (; currentChildIndex >= 0 && currentChildren[currentChildIndex] === null; currentChildIndex--) { }
|
|
261
|
+
if (currentChildIndex >= 0) {
|
|
262
|
+
const nodeRow = currentChildren[currentChildIndex];
|
|
263
|
+
if (currentChildIndex === 0)
|
|
264
|
+
nodeRowMap.delete(data);
|
|
265
|
+
else
|
|
266
|
+
currentChildren[currentChildIndex] = null;
|
|
267
|
+
const nextNodeRow = GetNextNodeRow(data, injector, getNextChildren, nodeRow[2]);
|
|
268
|
+
if (nodeRow[1] !== nextNodeRow[1])
|
|
269
|
+
vNode.DestroyAll(nodeRow[1]);
|
|
270
|
+
return nextNodeRow;
|
|
271
|
+
}
|
|
272
|
+
return GetNextNodeRow(data, injector, getNextChildren);
|
|
273
|
+
}
|
|
260
274
|
function EvaluateNextNodesLarge(injector, getNextChildren, nextData, nodeArray) {
|
|
261
275
|
const nextNodes = new Array(nextData.length);
|
|
262
276
|
const dataMap = new Map();
|
|
@@ -266,34 +280,7 @@ function EvaluateNextNodesLarge(injector, getNextChildren, nextData, nodeArray)
|
|
|
266
280
|
dataMap.set(nodeArray[x][0], arr);
|
|
267
281
|
}
|
|
268
282
|
for (let x = 0; x < nextData.length; x++) {
|
|
269
|
-
|
|
270
|
-
const currentChildren = dataMap.get(data);
|
|
271
|
-
let currentChildIndex = currentChildren ? currentChildren.length - 1 : -1;
|
|
272
|
-
for (; currentChildIndex >= 0 && currentChildren[currentChildIndex] === null; currentChildIndex--) { }
|
|
273
|
-
if (currentChildIndex !== -1) {
|
|
274
|
-
const currentChild = currentChildren[currentChildIndex];
|
|
275
|
-
currentChildren[currentChildIndex] = null;
|
|
276
|
-
const scope = currentChild[2];
|
|
277
|
-
const value = scope.value;
|
|
278
|
-
const updatedValue = Store_1.ObservableScope.Value(scope);
|
|
279
|
-
if (value !== updatedValue) {
|
|
280
|
-
vNode.DestroyAll(currentChild[1]);
|
|
281
|
-
currentChild[1] = CreateNodeArray(updatedValue);
|
|
282
|
-
}
|
|
283
|
-
nextNodes[x] = currentChild;
|
|
284
|
-
if (currentChildIndex === 0)
|
|
285
|
-
dataMap.delete(data);
|
|
286
|
-
}
|
|
287
|
-
else {
|
|
288
|
-
const scope = Store_1.ObservableScope.Create(function () {
|
|
289
|
-
return injector_1.Injector.Scope(injector, getNextChildren, data);
|
|
290
|
-
});
|
|
291
|
-
nextNodes[x] = [
|
|
292
|
-
data,
|
|
293
|
-
CreateNodeArray(Store_1.ObservableScope.Value(scope)),
|
|
294
|
-
scope,
|
|
295
|
-
];
|
|
296
|
-
}
|
|
283
|
+
nextNodes[x] = GetNextNodeRowLarge(injector, getNextChildren, dataMap, nextData[x]);
|
|
297
284
|
}
|
|
298
285
|
for (const value of dataMap.values()) {
|
|
299
286
|
for (let x = 0; x < value.length; x++) {
|
|
@@ -304,22 +291,13 @@ function EvaluateNextNodesLarge(injector, getNextChildren, nextData, nodeArray)
|
|
|
304
291
|
}
|
|
305
292
|
return nextNodes;
|
|
306
293
|
}
|
|
307
|
-
function CreateNodeArray(children
|
|
308
|
-
if (Array.isArray(children))
|
|
309
|
-
return children
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
if (firstPrevChild &&
|
|
313
|
-
firstPrevChild.node &&
|
|
314
|
-
firstPrevChild.type === "text") {
|
|
315
|
-
nodeConfig_1.NodeConfig.setText(firstPrevChild.node, children);
|
|
316
|
-
return previousChildren.length === 1
|
|
317
|
-
? previousChildren
|
|
318
|
-
: [firstPrevChild];
|
|
319
|
-
}
|
|
320
|
-
return [vNode.CreateText(children)];
|
|
294
|
+
function CreateNodeArray(children) {
|
|
295
|
+
if (!Array.isArray(children)) {
|
|
296
|
+
return typeof children === "string"
|
|
297
|
+
? [{ type: "string", node: children }]
|
|
298
|
+
: [children];
|
|
321
299
|
}
|
|
322
|
-
return
|
|
300
|
+
return children;
|
|
323
301
|
}
|
|
324
302
|
function UpdateChildren(vnode, init = false, skipInit = false) {
|
|
325
303
|
if (!vnode.children)
|
|
@@ -335,15 +313,16 @@ function UpdateChildren(vnode, init = false, skipInit = false) {
|
|
|
335
313
|
if (vnode.destroyed || children !== vnode.children)
|
|
336
314
|
return;
|
|
337
315
|
for (let x = 0; !skipInit && x < children.length; x++)
|
|
338
|
-
for (let y = 0; y < children[x][1].length; y++)
|
|
339
|
-
|
|
340
|
-
|
|
316
|
+
for (let y = 0; y < children[x][1].length; y++) {
|
|
317
|
+
const childNode = children[x][1][y];
|
|
318
|
+
if (!(0, vNode_types_1.isStringNode)(childNode) && childNode.definition) {
|
|
341
319
|
(0, thread_1.Schedule)(function () {
|
|
342
320
|
if (vnode.destroyed || children !== vnode.children)
|
|
343
321
|
return;
|
|
344
322
|
vNode.Init(childNode);
|
|
345
323
|
});
|
|
346
324
|
}
|
|
325
|
+
}
|
|
347
326
|
(0, thread_1.Thread)(function (async) {
|
|
348
327
|
if (vnode.destroyed || children !== vnode.children)
|
|
349
328
|
return;
|
package/Node/vNode.types.d.ts
CHANGED
|
@@ -14,17 +14,27 @@ export type vNodeEvents<E extends {
|
|
|
14
14
|
};
|
|
15
15
|
};
|
|
16
16
|
export type vNodeChildrenFunction<T> = ((data: T) => vNode | vNode[]) | ((data: T) => string);
|
|
17
|
-
export type
|
|
17
|
+
export type vStringNode = {
|
|
18
|
+
type: "string";
|
|
19
|
+
node: string;
|
|
20
|
+
};
|
|
21
|
+
export type vElementNode = {
|
|
18
22
|
type: string;
|
|
19
23
|
definition: vNodeDefinition<any, any, any>;
|
|
20
24
|
injector: Injector;
|
|
21
25
|
node: Node | null;
|
|
22
|
-
children:
|
|
26
|
+
children: (readonly [
|
|
27
|
+
any,
|
|
28
|
+
vNode[],
|
|
29
|
+
IObservableScope<string | vNode | vNode[]> | null
|
|
30
|
+
])[] | null;
|
|
23
31
|
destroyed: boolean;
|
|
24
32
|
onDestroyed: Emitter | null;
|
|
25
33
|
scopes: IObservableScope<unknown>[];
|
|
26
34
|
component: Component;
|
|
27
35
|
};
|
|
36
|
+
export type vNode = vStringNode | vElementNode;
|
|
37
|
+
export declare function isStringNode(vnode: vNode): vnode is vStringNode;
|
|
28
38
|
export type vNodeDefinition<P = HTMLElement, E = HTMLElementEventMap, T = never> = {
|
|
29
39
|
type: string;
|
|
30
40
|
node?: Node;
|
package/Node/vNode.types.js
CHANGED