@solidjs/universal 2.0.0-experimental.1 → 2.0.0-experimental.4
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/LICENSE +1 -1
- package/dist/dev.cjs +1 -1
- package/dist/dev.js +55 -28
- package/dist/universal.cjs +1 -1
- package/dist/universal.js +55 -28
- package/package.json +3 -3
- package/types/index.d.ts +0 -29
package/LICENSE
CHANGED
package/dist/dev.cjs
CHANGED
|
@@ -64,7 +64,7 @@ function createRenderer({
|
|
|
64
64
|
doNotUnwrap
|
|
65
65
|
});
|
|
66
66
|
if (doNotUnwrap && typeof value === "function") return value;
|
|
67
|
-
if (multi &&
|
|
67
|
+
if (multi && !Array.isArray(value)) value = [value != null ? value : ""];
|
|
68
68
|
if (Array.isArray(value)) {
|
|
69
69
|
for (let i = 0, len = value.length; i < len; i++) {
|
|
70
70
|
const item = value[i],
|
package/dist/dev.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
createRoot,
|
|
3
|
+
merge,
|
|
4
|
+
createRenderEffect,
|
|
5
|
+
createMemo,
|
|
6
|
+
createComponent,
|
|
7
|
+
untrack,
|
|
8
|
+
flatten
|
|
9
|
+
} from "solid-js";
|
|
2
10
|
|
|
3
11
|
function createRenderer({
|
|
4
12
|
createElement,
|
|
@@ -17,9 +25,14 @@ function createRenderer({
|
|
|
17
25
|
if (multi && !initial) initial = [];
|
|
18
26
|
if (typeof accessor !== "function") {
|
|
19
27
|
accessor = normalize(accessor, multi, true);
|
|
20
|
-
if (typeof accessor !== "function")
|
|
28
|
+
if (typeof accessor !== "function")
|
|
29
|
+
return insertExpression(parent, accessor, initial, marker);
|
|
21
30
|
}
|
|
22
|
-
createRenderEffect(
|
|
31
|
+
createRenderEffect(
|
|
32
|
+
() => normalize(accessor, multi),
|
|
33
|
+
(value, current) => insertExpression(parent, value, current, marker),
|
|
34
|
+
initial
|
|
35
|
+
);
|
|
23
36
|
}
|
|
24
37
|
function insertExpression(parent, value, current, marker) {
|
|
25
38
|
if (value === current) return;
|
|
@@ -45,7 +58,7 @@ function createRenderer({
|
|
|
45
58
|
} else if (current == null) {
|
|
46
59
|
appendNodes(parent, value);
|
|
47
60
|
} else {
|
|
48
|
-
reconcileArrays(parent, multi && current || [getFirstChild(parent)], value);
|
|
61
|
+
reconcileArrays(parent, (multi && current) || [getFirstChild(parent)], value);
|
|
49
62
|
}
|
|
50
63
|
}
|
|
51
64
|
} else {
|
|
@@ -62,7 +75,7 @@ function createRenderer({
|
|
|
62
75
|
doNotUnwrap
|
|
63
76
|
});
|
|
64
77
|
if (doNotUnwrap && typeof value === "function") return value;
|
|
65
|
-
if (multi &&
|
|
78
|
+
if (multi && !Array.isArray(value)) value = [value != null ? value : ""];
|
|
66
79
|
if (Array.isArray(value)) {
|
|
67
80
|
for (let i = 0, len = value.length; i < len; i++) {
|
|
68
81
|
const item = value[i],
|
|
@@ -91,7 +104,8 @@ function createRenderer({
|
|
|
91
104
|
bEnd--;
|
|
92
105
|
}
|
|
93
106
|
if (aEnd === aStart) {
|
|
94
|
-
const node =
|
|
107
|
+
const node =
|
|
108
|
+
bEnd < bLength ? (bStart ? getNextSibling(b[bStart - 1]) : b[bEnd - bStart]) : after;
|
|
95
109
|
while (bStart < bEnd) insertNode(parentNode, b[bStart++], node);
|
|
96
110
|
} else if (bEnd === bStart) {
|
|
97
111
|
while (aStart < aEnd) {
|
|
@@ -131,7 +145,7 @@ function createRenderer({
|
|
|
131
145
|
function cleanChildren(parent, current, marker, replacement) {
|
|
132
146
|
if (marker === undefined) {
|
|
133
147
|
let removed;
|
|
134
|
-
while (removed = getFirstChild(parent)) removeNode(parent, removed);
|
|
148
|
+
while ((removed = getFirstChild(parent))) removeNode(parent, removed);
|
|
135
149
|
replacement && insertNode(parent, replacement);
|
|
136
150
|
return "";
|
|
137
151
|
}
|
|
@@ -141,7 +155,11 @@ function createRenderer({
|
|
|
141
155
|
const el = current[i];
|
|
142
156
|
if (replacement !== el) {
|
|
143
157
|
const isParent = getParentNode(el) === parent;
|
|
144
|
-
if (replacement && !inserted && !i)
|
|
158
|
+
if (replacement && !inserted && !i)
|
|
159
|
+
isParent
|
|
160
|
+
? replaceNode(parent, replacement, el)
|
|
161
|
+
: insertNode(parent, replacement, marker);
|
|
162
|
+
else isParent && removeNode(parent, el);
|
|
145
163
|
} else inserted = true;
|
|
146
164
|
}
|
|
147
165
|
} else if (replacement) insertNode(parent, replacement, marker);
|
|
@@ -157,28 +175,37 @@ function createRenderer({
|
|
|
157
175
|
const prevProps = {};
|
|
158
176
|
props || (props = {});
|
|
159
177
|
if (!skipChildren) {
|
|
160
|
-
createRenderEffect(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
178
|
+
createRenderEffect(
|
|
179
|
+
() => normalize(props.children),
|
|
180
|
+
value => {
|
|
181
|
+
insertExpression(node, value, prevProps.children);
|
|
182
|
+
prevProps.children = value;
|
|
183
|
+
}
|
|
184
|
+
);
|
|
164
185
|
}
|
|
165
|
-
createRenderEffect(
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
186
|
+
createRenderEffect(
|
|
187
|
+
() => props.ref && props.ref(node),
|
|
188
|
+
() => ({})
|
|
189
|
+
);
|
|
190
|
+
createRenderEffect(
|
|
191
|
+
() => {
|
|
192
|
+
const newProps = {};
|
|
193
|
+
for (const prop in props) {
|
|
194
|
+
if (prop === "children" || prop === "ref") continue;
|
|
195
|
+
const value = props[prop];
|
|
196
|
+
if (value === prevProps[prop]) continue;
|
|
197
|
+
newProps[prop] = value;
|
|
198
|
+
}
|
|
199
|
+
return newProps;
|
|
200
|
+
},
|
|
201
|
+
props => {
|
|
202
|
+
for (const prop in props) {
|
|
203
|
+
const value = props[prop];
|
|
204
|
+
setProperty(node, prop, value, prevProps[prop]);
|
|
205
|
+
prevProps[prop] = value;
|
|
206
|
+
}
|
|
180
207
|
}
|
|
181
|
-
|
|
208
|
+
);
|
|
182
209
|
return prevProps;
|
|
183
210
|
}
|
|
184
211
|
return {
|
package/dist/universal.cjs
CHANGED
|
@@ -64,7 +64,7 @@ function createRenderer({
|
|
|
64
64
|
doNotUnwrap
|
|
65
65
|
});
|
|
66
66
|
if (doNotUnwrap && typeof value === "function") return value;
|
|
67
|
-
if (multi &&
|
|
67
|
+
if (multi && !Array.isArray(value)) value = [value != null ? value : ""];
|
|
68
68
|
if (Array.isArray(value)) {
|
|
69
69
|
for (let i = 0, len = value.length; i < len; i++) {
|
|
70
70
|
const item = value[i],
|
package/dist/universal.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
createRoot,
|
|
3
|
+
merge,
|
|
4
|
+
createRenderEffect,
|
|
5
|
+
createMemo,
|
|
6
|
+
createComponent,
|
|
7
|
+
untrack,
|
|
8
|
+
flatten
|
|
9
|
+
} from "solid-js";
|
|
2
10
|
|
|
3
11
|
function createRenderer({
|
|
4
12
|
createElement,
|
|
@@ -17,9 +25,14 @@ function createRenderer({
|
|
|
17
25
|
if (multi && !initial) initial = [];
|
|
18
26
|
if (typeof accessor !== "function") {
|
|
19
27
|
accessor = normalize(accessor, multi, true);
|
|
20
|
-
if (typeof accessor !== "function")
|
|
28
|
+
if (typeof accessor !== "function")
|
|
29
|
+
return insertExpression(parent, accessor, initial, marker);
|
|
21
30
|
}
|
|
22
|
-
createRenderEffect(
|
|
31
|
+
createRenderEffect(
|
|
32
|
+
() => normalize(accessor, multi),
|
|
33
|
+
(value, current) => insertExpression(parent, value, current, marker),
|
|
34
|
+
initial
|
|
35
|
+
);
|
|
23
36
|
}
|
|
24
37
|
function insertExpression(parent, value, current, marker) {
|
|
25
38
|
if (value === current) return;
|
|
@@ -45,7 +58,7 @@ function createRenderer({
|
|
|
45
58
|
} else if (current == null) {
|
|
46
59
|
appendNodes(parent, value);
|
|
47
60
|
} else {
|
|
48
|
-
reconcileArrays(parent, multi && current || [getFirstChild(parent)], value);
|
|
61
|
+
reconcileArrays(parent, (multi && current) || [getFirstChild(parent)], value);
|
|
49
62
|
}
|
|
50
63
|
}
|
|
51
64
|
} else {
|
|
@@ -62,7 +75,7 @@ function createRenderer({
|
|
|
62
75
|
doNotUnwrap
|
|
63
76
|
});
|
|
64
77
|
if (doNotUnwrap && typeof value === "function") return value;
|
|
65
|
-
if (multi &&
|
|
78
|
+
if (multi && !Array.isArray(value)) value = [value != null ? value : ""];
|
|
66
79
|
if (Array.isArray(value)) {
|
|
67
80
|
for (let i = 0, len = value.length; i < len; i++) {
|
|
68
81
|
const item = value[i],
|
|
@@ -91,7 +104,8 @@ function createRenderer({
|
|
|
91
104
|
bEnd--;
|
|
92
105
|
}
|
|
93
106
|
if (aEnd === aStart) {
|
|
94
|
-
const node =
|
|
107
|
+
const node =
|
|
108
|
+
bEnd < bLength ? (bStart ? getNextSibling(b[bStart - 1]) : b[bEnd - bStart]) : after;
|
|
95
109
|
while (bStart < bEnd) insertNode(parentNode, b[bStart++], node);
|
|
96
110
|
} else if (bEnd === bStart) {
|
|
97
111
|
while (aStart < aEnd) {
|
|
@@ -131,7 +145,7 @@ function createRenderer({
|
|
|
131
145
|
function cleanChildren(parent, current, marker, replacement) {
|
|
132
146
|
if (marker === undefined) {
|
|
133
147
|
let removed;
|
|
134
|
-
while (removed = getFirstChild(parent)) removeNode(parent, removed);
|
|
148
|
+
while ((removed = getFirstChild(parent))) removeNode(parent, removed);
|
|
135
149
|
replacement && insertNode(parent, replacement);
|
|
136
150
|
return "";
|
|
137
151
|
}
|
|
@@ -141,7 +155,11 @@ function createRenderer({
|
|
|
141
155
|
const el = current[i];
|
|
142
156
|
if (replacement !== el) {
|
|
143
157
|
const isParent = getParentNode(el) === parent;
|
|
144
|
-
if (replacement && !inserted && !i)
|
|
158
|
+
if (replacement && !inserted && !i)
|
|
159
|
+
isParent
|
|
160
|
+
? replaceNode(parent, replacement, el)
|
|
161
|
+
: insertNode(parent, replacement, marker);
|
|
162
|
+
else isParent && removeNode(parent, el);
|
|
145
163
|
} else inserted = true;
|
|
146
164
|
}
|
|
147
165
|
} else if (replacement) insertNode(parent, replacement, marker);
|
|
@@ -157,28 +175,37 @@ function createRenderer({
|
|
|
157
175
|
const prevProps = {};
|
|
158
176
|
props || (props = {});
|
|
159
177
|
if (!skipChildren) {
|
|
160
|
-
createRenderEffect(
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
178
|
+
createRenderEffect(
|
|
179
|
+
() => normalize(props.children),
|
|
180
|
+
value => {
|
|
181
|
+
insertExpression(node, value, prevProps.children);
|
|
182
|
+
prevProps.children = value;
|
|
183
|
+
}
|
|
184
|
+
);
|
|
164
185
|
}
|
|
165
|
-
createRenderEffect(
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
186
|
+
createRenderEffect(
|
|
187
|
+
() => props.ref && props.ref(node),
|
|
188
|
+
() => ({})
|
|
189
|
+
);
|
|
190
|
+
createRenderEffect(
|
|
191
|
+
() => {
|
|
192
|
+
const newProps = {};
|
|
193
|
+
for (const prop in props) {
|
|
194
|
+
if (prop === "children" || prop === "ref") continue;
|
|
195
|
+
const value = props[prop];
|
|
196
|
+
if (value === prevProps[prop]) continue;
|
|
197
|
+
newProps[prop] = value;
|
|
198
|
+
}
|
|
199
|
+
return newProps;
|
|
200
|
+
},
|
|
201
|
+
props => {
|
|
202
|
+
for (const prop in props) {
|
|
203
|
+
const value = props[prop];
|
|
204
|
+
setProperty(node, prop, value, prevProps[prop]);
|
|
205
|
+
prevProps[prop] = value;
|
|
206
|
+
}
|
|
180
207
|
}
|
|
181
|
-
|
|
208
|
+
);
|
|
182
209
|
return prevProps;
|
|
183
210
|
}
|
|
184
211
|
return {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solidjs/universal",
|
|
3
3
|
"description": "Solid's universal runtime for creating custom renderers",
|
|
4
|
-
"version": "2.0.0-experimental.
|
|
4
|
+
"version": "2.0.0-experimental.4",
|
|
5
5
|
"author": "Ryan Carniato",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"homepage": "https://solidjs.com",
|
|
@@ -37,10 +37,10 @@
|
|
|
37
37
|
"./types/*": "./types/*"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
|
-
"solid-js": "^2.0.0-experimental.
|
|
40
|
+
"solid-js": "^2.0.0-experimental.4"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"solid-js": "2.0.0-experimental.
|
|
43
|
+
"solid-js": "2.0.0-experimental.4"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"build": "npm-run-all -nl build:*",
|
package/types/index.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export interface RendererOptions<NodeType> {
|
|
2
|
-
createElement(tag: string): NodeType;
|
|
3
|
-
createTextNode(value: string): NodeType;
|
|
4
|
-
replaceText(textNode: NodeType, value: string): void;
|
|
5
|
-
isTextNode(node: NodeType): boolean;
|
|
6
|
-
setProperty<T>(node: NodeType, name: string, value: T, prev?: T): void;
|
|
7
|
-
insertNode(parent: NodeType, node: NodeType, anchor?: NodeType): void;
|
|
8
|
-
removeNode(parent: NodeType, node: NodeType): void;
|
|
9
|
-
getParentNode(node: NodeType): NodeType | undefined;
|
|
10
|
-
getFirstChild(node: NodeType): NodeType | undefined;
|
|
11
|
-
getNextSibling(node: NodeType): NodeType | undefined;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export interface Renderer<NodeType> {
|
|
15
|
-
render(code: () => NodeType, node: NodeType): () => void;
|
|
16
|
-
effect<T>(fn: (prev?: T) => T, effect: (value: T, prev?: T) => void, init?: T): void;
|
|
17
|
-
memo<T>(fn: () => T, equal: boolean): () => T;
|
|
18
|
-
createComponent<T>(Comp: (props: T) => NodeType, props: T): NodeType;
|
|
19
|
-
createElement(tag: string): NodeType;
|
|
20
|
-
createTextNode(value: string): NodeType;
|
|
21
|
-
insertNode(parent: NodeType, node: NodeType, anchor?: NodeType): void;
|
|
22
|
-
insert<T>(parent: any, accessor: (() => T) | T, marker?: any | null): NodeType;
|
|
23
|
-
spread<T>(node: any, accessor: (() => T) | T, skipChildren?: Boolean): void;
|
|
24
|
-
setProp<T>(node: NodeType, name: string, value: T, prev?: T): T;
|
|
25
|
-
mergeProps(...sources: unknown[]): unknown;
|
|
26
|
-
use<A, T>(fn: (element: NodeType, arg: A) => T, element: NodeType, arg: A): T;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export function createRenderer<NodeType>(options: RendererOptions<NodeType>): Renderer<NodeType>;
|