@solidjs/web 2.0.0-experimental.1 → 2.0.0-experimental.2
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 +9 -5
- package/dist/dev.js +629 -81
- package/dist/server.cjs +9 -5
- package/dist/server.js +625 -102
- package/dist/web.cjs +9 -5
- package/dist/web.js +617 -79
- package/package.json +3 -3
- package/storage/dist/storage.js +3 -3
- package/types/client.d.ts +11 -2
- package/types/core.d.ts +11 -1
- package/types/index.d.ts +20 -4
- package/types/server-mock.d.ts +33 -26
package/dist/dev.js
CHANGED
|
@@ -1,10 +1,72 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
createRoot,
|
|
3
|
+
untrack,
|
|
4
|
+
createRenderEffect,
|
|
5
|
+
sharedConfig,
|
|
6
|
+
flatten,
|
|
7
|
+
enableHydration,
|
|
8
|
+
createMemo,
|
|
9
|
+
$DEVCOMP,
|
|
10
|
+
omit
|
|
11
|
+
} from "solid-js";
|
|
12
|
+
export {
|
|
13
|
+
ErrorBoundary,
|
|
14
|
+
For,
|
|
15
|
+
Match,
|
|
16
|
+
Show,
|
|
17
|
+
Suspense,
|
|
18
|
+
Switch,
|
|
19
|
+
createComponent,
|
|
20
|
+
createRenderEffect as effect,
|
|
21
|
+
getOwner,
|
|
22
|
+
createMemo as memo,
|
|
23
|
+
merge as mergeProps,
|
|
24
|
+
untrack
|
|
25
|
+
} from "solid-js";
|
|
3
26
|
|
|
4
|
-
const booleans = [
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
27
|
+
const booleans = [
|
|
28
|
+
"allowfullscreen",
|
|
29
|
+
"async",
|
|
30
|
+
"autofocus",
|
|
31
|
+
"autoplay",
|
|
32
|
+
"checked",
|
|
33
|
+
"controls",
|
|
34
|
+
"default",
|
|
35
|
+
"disabled",
|
|
36
|
+
"formnovalidate",
|
|
37
|
+
"hidden",
|
|
38
|
+
"indeterminate",
|
|
39
|
+
"inert",
|
|
40
|
+
"ismap",
|
|
41
|
+
"loop",
|
|
42
|
+
"multiple",
|
|
43
|
+
"muted",
|
|
44
|
+
"nomodule",
|
|
45
|
+
"novalidate",
|
|
46
|
+
"open",
|
|
47
|
+
"playsinline",
|
|
48
|
+
"readonly",
|
|
49
|
+
"required",
|
|
50
|
+
"reversed",
|
|
51
|
+
"seamless",
|
|
52
|
+
"selected"
|
|
53
|
+
];
|
|
54
|
+
const Properties = /*#__PURE__*/ new Set([
|
|
55
|
+
"value",
|
|
56
|
+
"readOnly",
|
|
57
|
+
"formNoValidate",
|
|
58
|
+
"isMap",
|
|
59
|
+
"noModule",
|
|
60
|
+
"playsInline",
|
|
61
|
+
...booleans
|
|
62
|
+
]);
|
|
63
|
+
const ChildProperties = /*#__PURE__*/ new Set([
|
|
64
|
+
"innerHTML",
|
|
65
|
+
"textContent",
|
|
66
|
+
"innerText",
|
|
67
|
+
"children"
|
|
68
|
+
]);
|
|
69
|
+
const PropAliases = /*#__PURE__*/ Object.assign(Object.create(null), {
|
|
8
70
|
class: "className",
|
|
9
71
|
formnovalidate: {
|
|
10
72
|
$: "formNoValidate",
|
|
@@ -31,19 +93,396 @@ const PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {
|
|
|
31
93
|
});
|
|
32
94
|
function getPropAlias(prop, tagName) {
|
|
33
95
|
const a = PropAliases[prop];
|
|
34
|
-
return typeof a === "object" ? a[tagName] ? a["$"] : undefined : a;
|
|
35
|
-
}
|
|
36
|
-
const DelegatedEvents = /*#__PURE__*/new Set([
|
|
37
|
-
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
96
|
+
return typeof a === "object" ? (a[tagName] ? a["$"] : undefined) : a;
|
|
97
|
+
}
|
|
98
|
+
const DelegatedEvents = /*#__PURE__*/ new Set([
|
|
99
|
+
"beforeinput",
|
|
100
|
+
"click",
|
|
101
|
+
"dblclick",
|
|
102
|
+
"contextmenu",
|
|
103
|
+
"focusin",
|
|
104
|
+
"focusout",
|
|
105
|
+
"input",
|
|
106
|
+
"keydown",
|
|
107
|
+
"keyup",
|
|
108
|
+
"mousedown",
|
|
109
|
+
"mousemove",
|
|
110
|
+
"mouseout",
|
|
111
|
+
"mouseover",
|
|
112
|
+
"mouseup",
|
|
113
|
+
"pointerdown",
|
|
114
|
+
"pointermove",
|
|
115
|
+
"pointerout",
|
|
116
|
+
"pointerover",
|
|
117
|
+
"pointerup",
|
|
118
|
+
"touchend",
|
|
119
|
+
"touchmove",
|
|
120
|
+
"touchstart"
|
|
121
|
+
]);
|
|
122
|
+
const SVGElements = /*#__PURE__*/ new Set([
|
|
123
|
+
"altGlyph",
|
|
124
|
+
"altGlyphDef",
|
|
125
|
+
"altGlyphItem",
|
|
126
|
+
"animate",
|
|
127
|
+
"animateColor",
|
|
128
|
+
"animateMotion",
|
|
129
|
+
"animateTransform",
|
|
130
|
+
"circle",
|
|
131
|
+
"clipPath",
|
|
132
|
+
"color-profile",
|
|
133
|
+
"cursor",
|
|
134
|
+
"defs",
|
|
135
|
+
"desc",
|
|
136
|
+
"ellipse",
|
|
137
|
+
"feBlend",
|
|
138
|
+
"feColorMatrix",
|
|
139
|
+
"feComponentTransfer",
|
|
140
|
+
"feComposite",
|
|
141
|
+
"feConvolveMatrix",
|
|
142
|
+
"feDiffuseLighting",
|
|
143
|
+
"feDisplacementMap",
|
|
144
|
+
"feDistantLight",
|
|
145
|
+
"feDropShadow",
|
|
146
|
+
"feFlood",
|
|
147
|
+
"feFuncA",
|
|
148
|
+
"feFuncB",
|
|
149
|
+
"feFuncG",
|
|
150
|
+
"feFuncR",
|
|
151
|
+
"feGaussianBlur",
|
|
152
|
+
"feImage",
|
|
153
|
+
"feMerge",
|
|
154
|
+
"feMergeNode",
|
|
155
|
+
"feMorphology",
|
|
156
|
+
"feOffset",
|
|
157
|
+
"fePointLight",
|
|
158
|
+
"feSpecularLighting",
|
|
159
|
+
"feSpotLight",
|
|
160
|
+
"feTile",
|
|
161
|
+
"feTurbulence",
|
|
162
|
+
"filter",
|
|
163
|
+
"font",
|
|
164
|
+
"font-face",
|
|
165
|
+
"font-face-format",
|
|
166
|
+
"font-face-name",
|
|
167
|
+
"font-face-src",
|
|
168
|
+
"font-face-uri",
|
|
169
|
+
"foreignObject",
|
|
170
|
+
"g",
|
|
171
|
+
"glyph",
|
|
172
|
+
"glyphRef",
|
|
173
|
+
"hkern",
|
|
174
|
+
"image",
|
|
175
|
+
"line",
|
|
176
|
+
"linearGradient",
|
|
177
|
+
"marker",
|
|
178
|
+
"mask",
|
|
179
|
+
"metadata",
|
|
180
|
+
"missing-glyph",
|
|
181
|
+
"mpath",
|
|
182
|
+
"path",
|
|
183
|
+
"pattern",
|
|
184
|
+
"polygon",
|
|
185
|
+
"polyline",
|
|
186
|
+
"radialGradient",
|
|
187
|
+
"rect",
|
|
188
|
+
"set",
|
|
189
|
+
"stop",
|
|
190
|
+
"svg",
|
|
191
|
+
"switch",
|
|
192
|
+
"symbol",
|
|
193
|
+
"text",
|
|
194
|
+
"textPath",
|
|
195
|
+
"tref",
|
|
196
|
+
"tspan",
|
|
197
|
+
"use",
|
|
198
|
+
"view",
|
|
199
|
+
"vkern"
|
|
200
|
+
]);
|
|
42
201
|
const SVGNamespace = {
|
|
43
202
|
xlink: "http://www.w3.org/1999/xlink",
|
|
44
203
|
xml: "http://www.w3.org/XML/1998/namespace"
|
|
45
204
|
};
|
|
46
|
-
const DOMElements = /*#__PURE__*/new Set([
|
|
205
|
+
const DOMElements = /*#__PURE__*/ new Set([
|
|
206
|
+
"html",
|
|
207
|
+
"base",
|
|
208
|
+
"head",
|
|
209
|
+
"link",
|
|
210
|
+
"meta",
|
|
211
|
+
"style",
|
|
212
|
+
"title",
|
|
213
|
+
"body",
|
|
214
|
+
"address",
|
|
215
|
+
"article",
|
|
216
|
+
"aside",
|
|
217
|
+
"footer",
|
|
218
|
+
"header",
|
|
219
|
+
"main",
|
|
220
|
+
"nav",
|
|
221
|
+
"section",
|
|
222
|
+
"body",
|
|
223
|
+
"blockquote",
|
|
224
|
+
"dd",
|
|
225
|
+
"div",
|
|
226
|
+
"dl",
|
|
227
|
+
"dt",
|
|
228
|
+
"figcaption",
|
|
229
|
+
"figure",
|
|
230
|
+
"hr",
|
|
231
|
+
"li",
|
|
232
|
+
"ol",
|
|
233
|
+
"p",
|
|
234
|
+
"pre",
|
|
235
|
+
"ul",
|
|
236
|
+
"a",
|
|
237
|
+
"abbr",
|
|
238
|
+
"b",
|
|
239
|
+
"bdi",
|
|
240
|
+
"bdo",
|
|
241
|
+
"br",
|
|
242
|
+
"cite",
|
|
243
|
+
"code",
|
|
244
|
+
"data",
|
|
245
|
+
"dfn",
|
|
246
|
+
"em",
|
|
247
|
+
"i",
|
|
248
|
+
"kbd",
|
|
249
|
+
"mark",
|
|
250
|
+
"q",
|
|
251
|
+
"rp",
|
|
252
|
+
"rt",
|
|
253
|
+
"ruby",
|
|
254
|
+
"s",
|
|
255
|
+
"samp",
|
|
256
|
+
"small",
|
|
257
|
+
"span",
|
|
258
|
+
"strong",
|
|
259
|
+
"sub",
|
|
260
|
+
"sup",
|
|
261
|
+
"time",
|
|
262
|
+
"u",
|
|
263
|
+
"var",
|
|
264
|
+
"wbr",
|
|
265
|
+
"area",
|
|
266
|
+
"audio",
|
|
267
|
+
"img",
|
|
268
|
+
"map",
|
|
269
|
+
"track",
|
|
270
|
+
"video",
|
|
271
|
+
"embed",
|
|
272
|
+
"iframe",
|
|
273
|
+
"object",
|
|
274
|
+
"param",
|
|
275
|
+
"picture",
|
|
276
|
+
"portal",
|
|
277
|
+
"source",
|
|
278
|
+
"svg",
|
|
279
|
+
"math",
|
|
280
|
+
"canvas",
|
|
281
|
+
"noscript",
|
|
282
|
+
"script",
|
|
283
|
+
"del",
|
|
284
|
+
"ins",
|
|
285
|
+
"caption",
|
|
286
|
+
"col",
|
|
287
|
+
"colgroup",
|
|
288
|
+
"table",
|
|
289
|
+
"tbody",
|
|
290
|
+
"td",
|
|
291
|
+
"tfoot",
|
|
292
|
+
"th",
|
|
293
|
+
"thead",
|
|
294
|
+
"tr",
|
|
295
|
+
"button",
|
|
296
|
+
"datalist",
|
|
297
|
+
"fieldset",
|
|
298
|
+
"form",
|
|
299
|
+
"input",
|
|
300
|
+
"label",
|
|
301
|
+
"legend",
|
|
302
|
+
"meter",
|
|
303
|
+
"optgroup",
|
|
304
|
+
"option",
|
|
305
|
+
"output",
|
|
306
|
+
"progress",
|
|
307
|
+
"select",
|
|
308
|
+
"textarea",
|
|
309
|
+
"details",
|
|
310
|
+
"dialog",
|
|
311
|
+
"menu",
|
|
312
|
+
"summary",
|
|
313
|
+
"details",
|
|
314
|
+
"slot",
|
|
315
|
+
"template",
|
|
316
|
+
"acronym",
|
|
317
|
+
"applet",
|
|
318
|
+
"basefont",
|
|
319
|
+
"bgsound",
|
|
320
|
+
"big",
|
|
321
|
+
"blink",
|
|
322
|
+
"center",
|
|
323
|
+
"content",
|
|
324
|
+
"dir",
|
|
325
|
+
"font",
|
|
326
|
+
"frame",
|
|
327
|
+
"frameset",
|
|
328
|
+
"hgroup",
|
|
329
|
+
"image",
|
|
330
|
+
"keygen",
|
|
331
|
+
"marquee",
|
|
332
|
+
"menuitem",
|
|
333
|
+
"nobr",
|
|
334
|
+
"noembed",
|
|
335
|
+
"noframes",
|
|
336
|
+
"plaintext",
|
|
337
|
+
"rb",
|
|
338
|
+
"rtc",
|
|
339
|
+
"shadow",
|
|
340
|
+
"spacer",
|
|
341
|
+
"strike",
|
|
342
|
+
"tt",
|
|
343
|
+
"xmp",
|
|
344
|
+
"a",
|
|
345
|
+
"abbr",
|
|
346
|
+
"acronym",
|
|
347
|
+
"address",
|
|
348
|
+
"applet",
|
|
349
|
+
"area",
|
|
350
|
+
"article",
|
|
351
|
+
"aside",
|
|
352
|
+
"audio",
|
|
353
|
+
"b",
|
|
354
|
+
"base",
|
|
355
|
+
"basefont",
|
|
356
|
+
"bdi",
|
|
357
|
+
"bdo",
|
|
358
|
+
"bgsound",
|
|
359
|
+
"big",
|
|
360
|
+
"blink",
|
|
361
|
+
"blockquote",
|
|
362
|
+
"body",
|
|
363
|
+
"br",
|
|
364
|
+
"button",
|
|
365
|
+
"canvas",
|
|
366
|
+
"caption",
|
|
367
|
+
"center",
|
|
368
|
+
"cite",
|
|
369
|
+
"code",
|
|
370
|
+
"col",
|
|
371
|
+
"colgroup",
|
|
372
|
+
"content",
|
|
373
|
+
"data",
|
|
374
|
+
"datalist",
|
|
375
|
+
"dd",
|
|
376
|
+
"del",
|
|
377
|
+
"details",
|
|
378
|
+
"dfn",
|
|
379
|
+
"dialog",
|
|
380
|
+
"dir",
|
|
381
|
+
"div",
|
|
382
|
+
"dl",
|
|
383
|
+
"dt",
|
|
384
|
+
"em",
|
|
385
|
+
"embed",
|
|
386
|
+
"fieldset",
|
|
387
|
+
"figcaption",
|
|
388
|
+
"figure",
|
|
389
|
+
"font",
|
|
390
|
+
"footer",
|
|
391
|
+
"form",
|
|
392
|
+
"frame",
|
|
393
|
+
"frameset",
|
|
394
|
+
"head",
|
|
395
|
+
"header",
|
|
396
|
+
"hgroup",
|
|
397
|
+
"hr",
|
|
398
|
+
"html",
|
|
399
|
+
"i",
|
|
400
|
+
"iframe",
|
|
401
|
+
"image",
|
|
402
|
+
"img",
|
|
403
|
+
"input",
|
|
404
|
+
"ins",
|
|
405
|
+
"kbd",
|
|
406
|
+
"keygen",
|
|
407
|
+
"label",
|
|
408
|
+
"legend",
|
|
409
|
+
"li",
|
|
410
|
+
"link",
|
|
411
|
+
"main",
|
|
412
|
+
"map",
|
|
413
|
+
"mark",
|
|
414
|
+
"marquee",
|
|
415
|
+
"menu",
|
|
416
|
+
"menuitem",
|
|
417
|
+
"meta",
|
|
418
|
+
"meter",
|
|
419
|
+
"nav",
|
|
420
|
+
"nobr",
|
|
421
|
+
"noembed",
|
|
422
|
+
"noframes",
|
|
423
|
+
"noscript",
|
|
424
|
+
"object",
|
|
425
|
+
"ol",
|
|
426
|
+
"optgroup",
|
|
427
|
+
"option",
|
|
428
|
+
"output",
|
|
429
|
+
"p",
|
|
430
|
+
"param",
|
|
431
|
+
"picture",
|
|
432
|
+
"plaintext",
|
|
433
|
+
"portal",
|
|
434
|
+
"pre",
|
|
435
|
+
"progress",
|
|
436
|
+
"q",
|
|
437
|
+
"rb",
|
|
438
|
+
"rp",
|
|
439
|
+
"rt",
|
|
440
|
+
"rtc",
|
|
441
|
+
"ruby",
|
|
442
|
+
"s",
|
|
443
|
+
"samp",
|
|
444
|
+
"script",
|
|
445
|
+
"section",
|
|
446
|
+
"select",
|
|
447
|
+
"shadow",
|
|
448
|
+
"slot",
|
|
449
|
+
"small",
|
|
450
|
+
"source",
|
|
451
|
+
"spacer",
|
|
452
|
+
"span",
|
|
453
|
+
"strike",
|
|
454
|
+
"strong",
|
|
455
|
+
"style",
|
|
456
|
+
"sub",
|
|
457
|
+
"summary",
|
|
458
|
+
"sup",
|
|
459
|
+
"table",
|
|
460
|
+
"tbody",
|
|
461
|
+
"td",
|
|
462
|
+
"template",
|
|
463
|
+
"textarea",
|
|
464
|
+
"tfoot",
|
|
465
|
+
"th",
|
|
466
|
+
"thead",
|
|
467
|
+
"time",
|
|
468
|
+
"title",
|
|
469
|
+
"tr",
|
|
470
|
+
"track",
|
|
471
|
+
"tt",
|
|
472
|
+
"u",
|
|
473
|
+
"ul",
|
|
474
|
+
"var",
|
|
475
|
+
"video",
|
|
476
|
+
"wbr",
|
|
477
|
+
"xmp",
|
|
478
|
+
"input",
|
|
479
|
+
"h1",
|
|
480
|
+
"h2",
|
|
481
|
+
"h3",
|
|
482
|
+
"h4",
|
|
483
|
+
"h5",
|
|
484
|
+
"h6"
|
|
485
|
+
]);
|
|
47
486
|
|
|
48
487
|
function reconcileArrays(parentNode, a, b) {
|
|
49
488
|
let bLength = b.length,
|
|
@@ -64,7 +503,7 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
64
503
|
bEnd--;
|
|
65
504
|
}
|
|
66
505
|
if (aEnd === aStart) {
|
|
67
|
-
const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;
|
|
506
|
+
const node = bEnd < bLength ? (bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart]) : after;
|
|
68
507
|
while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);
|
|
69
508
|
} else if (bEnd === bStart) {
|
|
70
509
|
while (aStart < aEnd) {
|
|
@@ -105,12 +544,16 @@ function reconcileArrays(parentNode, a, b) {
|
|
|
105
544
|
const $$EVENTS = "_$DX_DELEGATE";
|
|
106
545
|
function render(code, element, init, options = {}) {
|
|
107
546
|
if (!element) {
|
|
108
|
-
throw new Error(
|
|
547
|
+
throw new Error(
|
|
548
|
+
"The `element` passed to `render(..., element)` doesn't exist. Make sure `element` exists in the document."
|
|
549
|
+
);
|
|
109
550
|
}
|
|
110
551
|
let disposer;
|
|
111
552
|
createRoot(dispose => {
|
|
112
553
|
disposer = dispose;
|
|
113
|
-
element === document
|
|
554
|
+
element === document
|
|
555
|
+
? code()
|
|
556
|
+
: insert(element, code(), element.firstChild ? null : undefined, init);
|
|
114
557
|
}, options.owner);
|
|
115
558
|
return () => {
|
|
116
559
|
disposer();
|
|
@@ -120,12 +563,19 @@ function render(code, element, init, options = {}) {
|
|
|
120
563
|
function template(html, isImportNode, isSVG, isMathML) {
|
|
121
564
|
let node;
|
|
122
565
|
const create = () => {
|
|
123
|
-
if (isHydrating())
|
|
124
|
-
|
|
566
|
+
if (isHydrating())
|
|
567
|
+
throw new Error(
|
|
568
|
+
"Failed attempt to create new DOM elements during hydration. Check that the libraries you are using support hydration."
|
|
569
|
+
);
|
|
570
|
+
const t = isMathML
|
|
571
|
+
? document.createElementNS("http://www.w3.org/1998/Math/MathML", "template")
|
|
572
|
+
: document.createElement("template");
|
|
125
573
|
t.innerHTML = html;
|
|
126
574
|
return isSVG ? t.content.firstChild.firstChild : isMathML ? t.firstChild : t.content.firstChild;
|
|
127
575
|
};
|
|
128
|
-
return isImportNode
|
|
576
|
+
return isImportNode
|
|
577
|
+
? () => untrack(() => document.importNode(node || (node = create()), true))
|
|
578
|
+
: () => (node || (node = create())).cloneNode(true);
|
|
129
579
|
}
|
|
130
580
|
function delegateEvents(eventNames, document = window.document) {
|
|
131
581
|
const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());
|
|
@@ -147,10 +597,12 @@ function setProperty(node, name, value) {
|
|
|
147
597
|
node[name] = value;
|
|
148
598
|
}
|
|
149
599
|
function setAttribute(node, name, value) {
|
|
150
|
-
if (value == null) node.removeAttribute(name);
|
|
600
|
+
if (value == null) node.removeAttribute(name);
|
|
601
|
+
else node.setAttribute(name, value);
|
|
151
602
|
}
|
|
152
603
|
function setAttributeNS(node, namespace, name, value) {
|
|
153
|
-
if (value == null) node.removeAttributeNS(namespace, name);
|
|
604
|
+
if (value == null) node.removeAttributeNS(namespace, name);
|
|
605
|
+
else node.setAttributeNS(namespace, name, value);
|
|
154
606
|
}
|
|
155
607
|
function setBoolAttribute(node, name, value) {
|
|
156
608
|
if (isHydrating(node)) return;
|
|
@@ -162,7 +614,7 @@ function className(node, value, isSVG, prev) {
|
|
|
162
614
|
return;
|
|
163
615
|
}
|
|
164
616
|
if (typeof value === "string") {
|
|
165
|
-
value !== prev && (isSVG ? node.setAttribute("class", value) : node.className = value);
|
|
617
|
+
value !== prev && (isSVG ? node.setAttribute("class", value) : (node.className = value));
|
|
166
618
|
return;
|
|
167
619
|
}
|
|
168
620
|
if (typeof prev === "string") {
|
|
@@ -193,7 +645,7 @@ function addEventListener(node, name, handler, delegate) {
|
|
|
193
645
|
} else node[`$$${name}`] = handler;
|
|
194
646
|
} else if (Array.isArray(handler)) {
|
|
195
647
|
const handlerFn = handler[0];
|
|
196
|
-
node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));
|
|
648
|
+
node.addEventListener(name, (handler[0] = e => handlerFn.call(node, handler[1], e)));
|
|
197
649
|
} else node.addEventListener(name, handler, typeof handler !== "function" && handler);
|
|
198
650
|
}
|
|
199
651
|
function style(node, value, prev) {
|
|
@@ -202,7 +654,7 @@ function style(node, value, prev) {
|
|
|
202
654
|
return;
|
|
203
655
|
}
|
|
204
656
|
const nodeStyle = node.style;
|
|
205
|
-
if (typeof value === "string") return nodeStyle.cssText = value;
|
|
657
|
+
if (typeof value === "string") return (nodeStyle.cssText = value);
|
|
206
658
|
typeof prev === "string" && (nodeStyle.cssText = prev = undefined);
|
|
207
659
|
prev || (prev = {});
|
|
208
660
|
value || (value = {});
|
|
@@ -217,20 +669,29 @@ function style(node, value, prev) {
|
|
|
217
669
|
function spread(node, props = {}, isSVG, skipChildren) {
|
|
218
670
|
const prevProps = {};
|
|
219
671
|
if (!skipChildren) {
|
|
220
|
-
createRenderEffect(
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
672
|
+
createRenderEffect(
|
|
673
|
+
() => normalize(props.children, prevProps.children),
|
|
674
|
+
value => {
|
|
675
|
+
insertExpression(node, value, prevProps.children);
|
|
676
|
+
prevProps.children = value;
|
|
677
|
+
}
|
|
678
|
+
);
|
|
224
679
|
}
|
|
225
|
-
createRenderEffect(
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
680
|
+
createRenderEffect(
|
|
681
|
+
() => typeof props.ref === "function" && use(props.ref, node),
|
|
682
|
+
() => {}
|
|
683
|
+
);
|
|
684
|
+
createRenderEffect(
|
|
685
|
+
() => {
|
|
686
|
+
const newProps = {};
|
|
687
|
+
for (const prop in props) {
|
|
688
|
+
if (prop === "children" || prop === "ref") continue;
|
|
689
|
+
newProps[prop] = props[prop];
|
|
690
|
+
}
|
|
691
|
+
return newProps;
|
|
692
|
+
},
|
|
693
|
+
props => assign(node, props, isSVG, true, prevProps, true)
|
|
694
|
+
);
|
|
234
695
|
return prevProps;
|
|
235
696
|
}
|
|
236
697
|
function dynamicProperty(props, key) {
|
|
@@ -253,7 +714,11 @@ function insert(parent, accessor, marker, initial) {
|
|
|
253
714
|
accessor = normalize(accessor, initial, multi, true);
|
|
254
715
|
if (typeof accessor !== "function") return insertExpression(parent, accessor, initial, marker);
|
|
255
716
|
}
|
|
256
|
-
createRenderEffect(
|
|
717
|
+
createRenderEffect(
|
|
718
|
+
prev => normalize(accessor, prev, multi),
|
|
719
|
+
(value, current) => insertExpression(parent, value, current, marker),
|
|
720
|
+
initial
|
|
721
|
+
);
|
|
257
722
|
}
|
|
258
723
|
function assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = false) {
|
|
259
724
|
props || (props = {});
|
|
@@ -295,10 +760,14 @@ function getNextElement(template) {
|
|
|
295
760
|
let node,
|
|
296
761
|
key,
|
|
297
762
|
hydrating = isHydrating();
|
|
298
|
-
if (!hydrating || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {
|
|
763
|
+
if (!hydrating || !(node = sharedConfig.registry.get((key = getHydrationKey())))) {
|
|
299
764
|
if (hydrating) {
|
|
300
765
|
sharedConfig.done = true;
|
|
301
|
-
throw new Error(
|
|
766
|
+
throw new Error(
|
|
767
|
+
`Hydration Mismatch. Unable to find DOM nodes for hydration key: ${key}\n${
|
|
768
|
+
template ? template().outerHTML : ""
|
|
769
|
+
}`
|
|
770
|
+
);
|
|
302
771
|
}
|
|
303
772
|
return template();
|
|
304
773
|
}
|
|
@@ -318,7 +787,8 @@ function getNextMarker(start) {
|
|
|
318
787
|
while (end) {
|
|
319
788
|
if (end.nodeType === 8) {
|
|
320
789
|
const v = end.nodeValue;
|
|
321
|
-
if (v === "$") count++;
|
|
790
|
+
if (v === "$") count++;
|
|
791
|
+
else if (v === "/") {
|
|
322
792
|
if (count === 0) return [end, current];
|
|
323
793
|
count--;
|
|
324
794
|
}
|
|
@@ -332,10 +802,7 @@ function getNextMarker(start) {
|
|
|
332
802
|
function runHydrationEvents() {
|
|
333
803
|
if (sharedConfig.events && !sharedConfig.events.queued) {
|
|
334
804
|
queueMicrotask(() => {
|
|
335
|
-
const {
|
|
336
|
-
completed,
|
|
337
|
-
events
|
|
338
|
-
} = sharedConfig;
|
|
805
|
+
const { completed, events } = sharedConfig;
|
|
339
806
|
if (!events) return;
|
|
340
807
|
events.queued = false;
|
|
341
808
|
while (events.length) {
|
|
@@ -357,14 +824,16 @@ function isHydrating(node) {
|
|
|
357
824
|
}
|
|
358
825
|
function toggleClassKey(node, key, value) {
|
|
359
826
|
const classNames = key.trim().split(/\s+/);
|
|
360
|
-
for (let i = 0, nameLen = classNames.length; i < nameLen; i++)
|
|
827
|
+
for (let i = 0, nameLen = classNames.length; i < nameLen; i++)
|
|
828
|
+
node.classList.toggle(classNames[i], value);
|
|
361
829
|
}
|
|
362
830
|
function classListToObject(classList) {
|
|
363
831
|
if (Array.isArray(classList)) {
|
|
364
832
|
const result = {};
|
|
365
833
|
for (let i = 0, len = classList.length; i < len; i++) {
|
|
366
834
|
const key = classList[i];
|
|
367
|
-
if (typeof key === "object" && key != null) Object.assign(result, key);
|
|
835
|
+
if (typeof key === "object" && key != null) Object.assign(result, key);
|
|
836
|
+
else if (key || key === 0) result[key] = true;
|
|
368
837
|
}
|
|
369
838
|
return result;
|
|
370
839
|
}
|
|
@@ -396,11 +865,18 @@ function assignProp(node, prop, value, prev, isSVG, skipRef) {
|
|
|
396
865
|
setAttribute(node, prop.slice(5), value);
|
|
397
866
|
} else if (prop.slice(0, 5) === "bool:") {
|
|
398
867
|
setBoolAttribute(node, prop.slice(5), value);
|
|
399
|
-
} else if (
|
|
400
|
-
|
|
868
|
+
} else if (
|
|
869
|
+
(forceProp = prop.slice(0, 5) === "prop:") ||
|
|
870
|
+
ChildProperties.has(prop) ||
|
|
871
|
+
(!isSVG && (propAlias = getPropAlias(prop, node.tagName))) ||
|
|
872
|
+
Properties.has(prop)
|
|
873
|
+
) {
|
|
874
|
+
if (forceProp) prop = prop.slice(5);
|
|
875
|
+
else node[propAlias || prop] = value;
|
|
401
876
|
} else {
|
|
402
877
|
const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
|
|
403
|
-
if (ns) setAttributeNS(node, ns, prop, value);
|
|
878
|
+
if (ns) setAttributeNS(node, ns, prop, value);
|
|
879
|
+
else setAttribute(node, prop, value);
|
|
404
880
|
}
|
|
405
881
|
return value;
|
|
406
882
|
}
|
|
@@ -412,10 +888,11 @@ function eventHandler(e) {
|
|
|
412
888
|
const key = `$$${e.type}`;
|
|
413
889
|
const oriTarget = e.target;
|
|
414
890
|
const oriCurrentTarget = e.currentTarget;
|
|
415
|
-
const retarget = value =>
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
891
|
+
const retarget = value =>
|
|
892
|
+
Object.defineProperty(e, "target", {
|
|
893
|
+
configurable: true,
|
|
894
|
+
value
|
|
895
|
+
});
|
|
419
896
|
const handleNode = () => {
|
|
420
897
|
const handler = node[key];
|
|
421
898
|
if (handler && !node.disabled) {
|
|
@@ -423,7 +900,11 @@ function eventHandler(e) {
|
|
|
423
900
|
data !== undefined ? handler.call(node, data, e) : handler.call(node, e);
|
|
424
901
|
if (e.cancelBubble) return;
|
|
425
902
|
}
|
|
426
|
-
node.host &&
|
|
903
|
+
node.host &&
|
|
904
|
+
typeof node.host !== "string" &&
|
|
905
|
+
!node.host._$host &&
|
|
906
|
+
node.contains(e.target) &&
|
|
907
|
+
retarget(node.host);
|
|
427
908
|
return true;
|
|
428
909
|
};
|
|
429
910
|
const walkUpTree = () => {
|
|
@@ -451,8 +932,7 @@ function eventHandler(e) {
|
|
|
451
932
|
break;
|
|
452
933
|
}
|
|
453
934
|
}
|
|
454
|
-
}
|
|
455
|
-
else walkUpTree();
|
|
935
|
+
} else walkUpTree();
|
|
456
936
|
retarget(oriTarget);
|
|
457
937
|
}
|
|
458
938
|
function insertExpression(parent, value, current, marker) {
|
|
@@ -498,7 +978,9 @@ function normalize(value, current, multi, doNotUnwrap) {
|
|
|
498
978
|
const item = value[i],
|
|
499
979
|
prev = current && current[i],
|
|
500
980
|
t = typeof item;
|
|
501
|
-
if (t === "string" || t === "number")
|
|
981
|
+
if (t === "string" || t === "number")
|
|
982
|
+
value[i] =
|
|
983
|
+
prev && prev.nodeType === 3 && prev.data === item ? prev : document.createTextNode(item);
|
|
502
984
|
}
|
|
503
985
|
}
|
|
504
986
|
return value;
|
|
@@ -507,14 +989,18 @@ function appendNodes(parent, array, marker = null) {
|
|
|
507
989
|
for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);
|
|
508
990
|
}
|
|
509
991
|
function cleanChildren(parent, current, marker, replacement) {
|
|
510
|
-
if (marker === undefined) return parent.textContent = "";
|
|
992
|
+
if (marker === undefined) return (parent.textContent = "");
|
|
511
993
|
if (current.length) {
|
|
512
994
|
let inserted = false;
|
|
513
995
|
for (let i = current.length - 1; i >= 0; i--) {
|
|
514
996
|
const el = current[i];
|
|
515
997
|
if (replacement !== el) {
|
|
516
998
|
const isParent = el.parentNode === parent;
|
|
517
|
-
if (replacement && !inserted && !i)
|
|
999
|
+
if (replacement && !inserted && !i)
|
|
1000
|
+
isParent
|
|
1001
|
+
? parent.replaceChild(replacement, el)
|
|
1002
|
+
: parent.insertBefore(replacement, marker);
|
|
1003
|
+
else isParent && el.remove();
|
|
518
1004
|
} else inserted = true;
|
|
519
1005
|
}
|
|
520
1006
|
} else if (replacement) parent.insertBefore(replacement, marker);
|
|
@@ -524,7 +1010,8 @@ function gatherHydratable(element, root) {
|
|
|
524
1010
|
for (let i = 0; i < templates.length; i++) {
|
|
525
1011
|
const node = templates[i];
|
|
526
1012
|
const key = node.getAttribute("data-hk");
|
|
527
|
-
if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key))
|
|
1013
|
+
if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key))
|
|
1014
|
+
sharedConfig.registry.set(key, node);
|
|
528
1015
|
}
|
|
529
1016
|
}
|
|
530
1017
|
function getHydrationKey() {
|
|
@@ -577,18 +1064,21 @@ function Portal(props) {
|
|
|
577
1064
|
endMarker = document.createTextNode(""),
|
|
578
1065
|
mount = () => createElementProxy(props.mount || document.body, treeMarker);
|
|
579
1066
|
let content = createMemo(() => [startMarker, props.children]);
|
|
580
|
-
createRenderEffect(
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
1067
|
+
createRenderEffect(
|
|
1068
|
+
() => [mount(), content()],
|
|
1069
|
+
([m, c]) => {
|
|
1070
|
+
m.appendChild(endMarker);
|
|
1071
|
+
insert(m, c, endMarker);
|
|
1072
|
+
return () => {
|
|
1073
|
+
let c = startMarker;
|
|
1074
|
+
while (c && c !== endMarker) {
|
|
1075
|
+
const n = c.nextSibling;
|
|
1076
|
+
m.removeChild(c);
|
|
1077
|
+
c = n;
|
|
1078
|
+
}
|
|
1079
|
+
};
|
|
1080
|
+
}
|
|
1081
|
+
);
|
|
592
1082
|
return treeMarker;
|
|
593
1083
|
}
|
|
594
1084
|
function createElementProxy(el, marker) {
|
|
@@ -608,9 +1098,8 @@ function createElementProxy(el, marker) {
|
|
|
608
1098
|
}
|
|
609
1099
|
});
|
|
610
1100
|
}
|
|
611
|
-
function
|
|
612
|
-
const
|
|
613
|
-
const cached = createMemo(() => props.component);
|
|
1101
|
+
function createDynamic(component, props) {
|
|
1102
|
+
const cached = createMemo(component);
|
|
614
1103
|
return createMemo(() => {
|
|
615
1104
|
const component = cached();
|
|
616
1105
|
switch (typeof component) {
|
|
@@ -618,14 +1107,73 @@ function Dynamic(props) {
|
|
|
618
1107
|
Object.assign(component, {
|
|
619
1108
|
[$DEVCOMP]: true
|
|
620
1109
|
});
|
|
621
|
-
return untrack(() => component(
|
|
1110
|
+
return untrack(() => component(props));
|
|
622
1111
|
case "string":
|
|
623
1112
|
const isSvg = SVGElements.has(component);
|
|
624
1113
|
const el = sharedConfig.context ? getNextElement() : createElement(component, isSvg);
|
|
625
|
-
spread(el,
|
|
1114
|
+
spread(el, props, isSvg);
|
|
626
1115
|
return el;
|
|
627
1116
|
}
|
|
628
1117
|
});
|
|
629
1118
|
}
|
|
1119
|
+
function Dynamic(props) {
|
|
1120
|
+
const others = omit(props, "component");
|
|
1121
|
+
return createDynamic(() => props.component, others);
|
|
1122
|
+
}
|
|
630
1123
|
|
|
631
|
-
export {
|
|
1124
|
+
export {
|
|
1125
|
+
voidFn as Assets,
|
|
1126
|
+
ChildProperties,
|
|
1127
|
+
DOMElements,
|
|
1128
|
+
DelegatedEvents,
|
|
1129
|
+
Dynamic,
|
|
1130
|
+
Hydration,
|
|
1131
|
+
voidFn as HydrationScript,
|
|
1132
|
+
NoHydration,
|
|
1133
|
+
Portal,
|
|
1134
|
+
Properties,
|
|
1135
|
+
RequestContext,
|
|
1136
|
+
SVGElements,
|
|
1137
|
+
SVGNamespace,
|
|
1138
|
+
addEventListener,
|
|
1139
|
+
assign,
|
|
1140
|
+
className,
|
|
1141
|
+
clearDelegatedEvents,
|
|
1142
|
+
createDynamic,
|
|
1143
|
+
delegateEvents,
|
|
1144
|
+
dynamicProperty,
|
|
1145
|
+
escape,
|
|
1146
|
+
voidFn as generateHydrationScript,
|
|
1147
|
+
voidFn as getAssets,
|
|
1148
|
+
getHydrationKey,
|
|
1149
|
+
getNextElement,
|
|
1150
|
+
getNextMarker,
|
|
1151
|
+
getNextMatch,
|
|
1152
|
+
getPropAlias,
|
|
1153
|
+
voidFn as getRequestEvent,
|
|
1154
|
+
hydrate,
|
|
1155
|
+
insert,
|
|
1156
|
+
isDev,
|
|
1157
|
+
isServer,
|
|
1158
|
+
render,
|
|
1159
|
+
renderToStream,
|
|
1160
|
+
renderToString,
|
|
1161
|
+
renderToStringAsync,
|
|
1162
|
+
resolveSSRNode,
|
|
1163
|
+
runHydrationEvents,
|
|
1164
|
+
setAttribute,
|
|
1165
|
+
setAttributeNS,
|
|
1166
|
+
setBoolAttribute,
|
|
1167
|
+
setProperty,
|
|
1168
|
+
spread,
|
|
1169
|
+
ssr,
|
|
1170
|
+
ssrAttribute,
|
|
1171
|
+
ssrClassList,
|
|
1172
|
+
ssrElement,
|
|
1173
|
+
ssrHydrationKey,
|
|
1174
|
+
ssrStyle,
|
|
1175
|
+
style,
|
|
1176
|
+
template,
|
|
1177
|
+
use,
|
|
1178
|
+
voidFn as useAssets
|
|
1179
|
+
};
|