solid-js 1.8.22 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/dev.cjs +7 -6
  2. package/dist/dev.js +567 -325
  3. package/dist/server.cjs +1 -1
  4. package/dist/server.js +169 -75
  5. package/dist/solid.cjs +7 -6
  6. package/dist/solid.js +494 -283
  7. package/h/dist/h.js +40 -9
  8. package/h/jsx-runtime/dist/jsx.js +1 -1
  9. package/h/jsx-runtime/types/index.d.ts +13 -10
  10. package/h/jsx-runtime/types/jsx.d.ts +22 -1
  11. package/h/types/hyperscript.d.ts +11 -11
  12. package/h/types/index.d.ts +1 -1
  13. package/html/dist/html.cjs +4 -2
  14. package/html/dist/html.js +222 -95
  15. package/html/types/index.d.ts +1 -1
  16. package/html/types/lit.d.ts +52 -33
  17. package/package.json +1 -5
  18. package/store/dist/dev.cjs +1 -1
  19. package/store/dist/dev.js +123 -43
  20. package/store/dist/server.cjs +4 -0
  21. package/store/dist/server.js +23 -8
  22. package/store/dist/store.cjs +1 -1
  23. package/store/dist/store.js +114 -40
  24. package/store/package.json +0 -4
  25. package/store/types/index.d.ts +21 -7
  26. package/store/types/modifiers.d.ts +6 -3
  27. package/store/types/mutable.d.ts +5 -2
  28. package/store/types/server.d.ts +26 -5
  29. package/store/types/store.d.ts +219 -62
  30. package/types/index.d.ts +75 -10
  31. package/types/jsx.d.ts +35 -8
  32. package/types/reactive/array.d.ts +12 -4
  33. package/types/reactive/observable.d.ts +25 -17
  34. package/types/reactive/scheduler.d.ts +9 -6
  35. package/types/reactive/signal.d.ts +236 -143
  36. package/types/render/Suspense.d.ts +5 -5
  37. package/types/render/component.d.ts +64 -33
  38. package/types/render/flow.d.ts +43 -31
  39. package/types/render/hydration.d.ts +15 -15
  40. package/types/server/index.d.ts +57 -2
  41. package/types/server/reactive.d.ts +73 -42
  42. package/types/server/rendering.d.ts +169 -98
  43. package/universal/dist/dev.js +28 -12
  44. package/universal/dist/universal.js +28 -12
  45. package/universal/types/index.d.ts +3 -1
  46. package/universal/types/universal.d.ts +0 -1
  47. package/web/dist/dev.cjs +57 -24
  48. package/web/dist/dev.js +679 -101
  49. package/web/dist/server.cjs +96 -15
  50. package/web/dist/server.js +676 -105
  51. package/web/dist/web.cjs +53 -23
  52. package/web/dist/web.js +664 -99
  53. package/web/package.json +0 -4
  54. package/web/storage/dist/storage.js +3 -3
  55. package/web/types/client.d.ts +5 -3
  56. package/web/types/core.d.ts +10 -1
  57. package/web/types/index.d.ts +27 -10
  58. package/web/types/server-mock.d.ts +47 -32
  59. package/web/types/server.d.ts +88 -0
package/web/dist/web.js CHANGED
@@ -1,14 +1,82 @@
1
- import { createRoot, createRenderEffect, untrack, sharedConfig, enableHydration, getOwner, createEffect, runWithOwner, createMemo, createSignal, onCleanup, splitProps } from 'solid-js';
2
- export { ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, createComponent, createRenderEffect as effect, getOwner, createMemo as memo, mergeProps, untrack } from 'solid-js';
1
+ import {
2
+ createRoot,
3
+ createRenderEffect,
4
+ untrack,
5
+ sharedConfig,
6
+ enableHydration,
7
+ getOwner,
8
+ createEffect,
9
+ runWithOwner,
10
+ createMemo,
11
+ createSignal,
12
+ onCleanup,
13
+ splitProps
14
+ } from "solid-js";
15
+ export {
16
+ ErrorBoundary,
17
+ For,
18
+ Index,
19
+ Match,
20
+ Show,
21
+ Suspense,
22
+ SuspenseList,
23
+ Switch,
24
+ createComponent,
25
+ createRenderEffect as effect,
26
+ getOwner,
27
+ createMemo as memo,
28
+ mergeProps,
29
+ untrack
30
+ } from "solid-js";
3
31
 
4
- const booleans = ["allowfullscreen", "async", "autofocus", "autoplay", "checked", "controls", "default", "disabled", "formnovalidate", "hidden", "indeterminate", "inert", "ismap", "loop", "multiple", "muted", "nomodule", "novalidate", "open", "playsinline", "readonly", "required", "reversed", "seamless", "selected"];
5
- const Properties = /*#__PURE__*/new Set(["className", "value", "readOnly", "formNoValidate", "isMap", "noModule", "playsInline", ...booleans]);
6
- const ChildProperties = /*#__PURE__*/new Set(["innerHTML", "textContent", "innerText", "children"]);
7
- const Aliases = /*#__PURE__*/Object.assign(Object.create(null), {
32
+ const booleans = [
33
+ "allowfullscreen",
34
+ "async",
35
+ "autofocus",
36
+ "autoplay",
37
+ "checked",
38
+ "controls",
39
+ "default",
40
+ "disabled",
41
+ "formnovalidate",
42
+ "hidden",
43
+ "indeterminate",
44
+ "inert",
45
+ "ismap",
46
+ "loop",
47
+ "multiple",
48
+ "muted",
49
+ "nomodule",
50
+ "novalidate",
51
+ "open",
52
+ "playsinline",
53
+ "readonly",
54
+ "required",
55
+ "reversed",
56
+ "seamless",
57
+ "selected"
58
+ ];
59
+ const Properties = /*#__PURE__*/ new Set([
60
+ "className",
61
+ "value",
62
+ "readOnly",
63
+ "formNoValidate",
64
+ "isMap",
65
+ "noModule",
66
+ "playsInline",
67
+ ...booleans
68
+ ]);
69
+ const ChildProperties = /*#__PURE__*/ new Set([
70
+ "innerHTML",
71
+ "textContent",
72
+ "innerText",
73
+ "children"
74
+ ]);
75
+ const Aliases = /*#__PURE__*/ Object.assign(Object.create(null), {
8
76
  className: "class",
9
77
  htmlFor: "for"
10
78
  });
11
- const PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {
79
+ const PropAliases = /*#__PURE__*/ Object.assign(Object.create(null), {
12
80
  class: "className",
13
81
  formnovalidate: {
14
82
  $: "formNoValidate",
@@ -35,19 +103,396 @@ const PropAliases = /*#__PURE__*/Object.assign(Object.create(null), {
35
103
  });
36
104
  function getPropAlias(prop, tagName) {
37
105
  const a = PropAliases[prop];
38
- return typeof a === "object" ? a[tagName] ? a["$"] : undefined : a;
39
- }
40
- const DelegatedEvents = /*#__PURE__*/new Set(["beforeinput", "click", "dblclick", "contextmenu", "focusin", "focusout", "input", "keydown", "keyup", "mousedown", "mousemove", "mouseout", "mouseover", "mouseup", "pointerdown", "pointermove", "pointerout", "pointerover", "pointerup", "touchend", "touchmove", "touchstart"]);
41
- const SVGElements = /*#__PURE__*/new Set([
42
- "altGlyph", "altGlyphDef", "altGlyphItem", "animate", "animateColor", "animateMotion", "animateTransform", "circle", "clipPath", "color-profile", "cursor", "defs", "desc", "ellipse", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "filter", "font", "font-face", "font-face-format", "font-face-name", "font-face-src", "font-face-uri", "foreignObject", "g", "glyph", "glyphRef", "hkern", "image", "line", "linearGradient", "marker", "mask", "metadata", "missing-glyph", "mpath", "path", "pattern", "polygon", "polyline", "radialGradient", "rect",
43
- "set", "stop",
44
- "svg", "switch", "symbol", "text", "textPath",
45
- "tref", "tspan", "use", "view", "vkern"]);
106
+ return typeof a === "object" ? (a[tagName] ? a["$"] : undefined) : a;
107
+ }
108
+ const DelegatedEvents = /*#__PURE__*/ new Set([
109
+ "beforeinput",
110
+ "click",
111
+ "dblclick",
112
+ "contextmenu",
113
+ "focusin",
114
+ "focusout",
115
+ "input",
116
+ "keydown",
117
+ "keyup",
118
+ "mousedown",
119
+ "mousemove",
120
+ "mouseout",
121
+ "mouseover",
122
+ "mouseup",
123
+ "pointerdown",
124
+ "pointermove",
125
+ "pointerout",
126
+ "pointerover",
127
+ "pointerup",
128
+ "touchend",
129
+ "touchmove",
130
+ "touchstart"
131
+ ]);
132
+ const SVGElements = /*#__PURE__*/ new Set([
133
+ "altGlyph",
134
+ "altGlyphDef",
135
+ "altGlyphItem",
136
+ "animate",
137
+ "animateColor",
138
+ "animateMotion",
139
+ "animateTransform",
140
+ "circle",
141
+ "clipPath",
142
+ "color-profile",
143
+ "cursor",
144
+ "defs",
145
+ "desc",
146
+ "ellipse",
147
+ "feBlend",
148
+ "feColorMatrix",
149
+ "feComponentTransfer",
150
+ "feComposite",
151
+ "feConvolveMatrix",
152
+ "feDiffuseLighting",
153
+ "feDisplacementMap",
154
+ "feDistantLight",
155
+ "feDropShadow",
156
+ "feFlood",
157
+ "feFuncA",
158
+ "feFuncB",
159
+ "feFuncG",
160
+ "feFuncR",
161
+ "feGaussianBlur",
162
+ "feImage",
163
+ "feMerge",
164
+ "feMergeNode",
165
+ "feMorphology",
166
+ "feOffset",
167
+ "fePointLight",
168
+ "feSpecularLighting",
169
+ "feSpotLight",
170
+ "feTile",
171
+ "feTurbulence",
172
+ "filter",
173
+ "font",
174
+ "font-face",
175
+ "font-face-format",
176
+ "font-face-name",
177
+ "font-face-src",
178
+ "font-face-uri",
179
+ "foreignObject",
180
+ "g",
181
+ "glyph",
182
+ "glyphRef",
183
+ "hkern",
184
+ "image",
185
+ "line",
186
+ "linearGradient",
187
+ "marker",
188
+ "mask",
189
+ "metadata",
190
+ "missing-glyph",
191
+ "mpath",
192
+ "path",
193
+ "pattern",
194
+ "polygon",
195
+ "polyline",
196
+ "radialGradient",
197
+ "rect",
198
+ "set",
199
+ "stop",
200
+ "svg",
201
+ "switch",
202
+ "symbol",
203
+ "text",
204
+ "textPath",
205
+ "tref",
206
+ "tspan",
207
+ "use",
208
+ "view",
209
+ "vkern"
210
+ ]);
46
211
  const SVGNamespace = {
47
212
  xlink: "http://www.w3.org/1999/xlink",
48
213
  xml: "http://www.w3.org/XML/1998/namespace"
49
214
  };
50
- const DOMElements = /*#__PURE__*/new Set(["html", "base", "head", "link", "meta", "style", "title", "body", "address", "article", "aside", "footer", "header", "main", "nav", "section", "body", "blockquote", "dd", "div", "dl", "dt", "figcaption", "figure", "hr", "li", "ol", "p", "pre", "ul", "a", "abbr", "b", "bdi", "bdo", "br", "cite", "code", "data", "dfn", "em", "i", "kbd", "mark", "q", "rp", "rt", "ruby", "s", "samp", "small", "span", "strong", "sub", "sup", "time", "u", "var", "wbr", "area", "audio", "img", "map", "track", "video", "embed", "iframe", "object", "param", "picture", "portal", "source", "svg", "math", "canvas", "noscript", "script", "del", "ins", "caption", "col", "colgroup", "table", "tbody", "td", "tfoot", "th", "thead", "tr", "button", "datalist", "fieldset", "form", "input", "label", "legend", "meter", "optgroup", "option", "output", "progress", "select", "textarea", "details", "dialog", "menu", "summary", "details", "slot", "template", "acronym", "applet", "basefont", "bgsound", "big", "blink", "center", "content", "dir", "font", "frame", "frameset", "hgroup", "image", "keygen", "marquee", "menuitem", "nobr", "noembed", "noframes", "plaintext", "rb", "rtc", "shadow", "spacer", "strike", "tt", "xmp", "a", "abbr", "acronym", "address", "applet", "area", "article", "aside", "audio", "b", "base", "basefont", "bdi", "bdo", "bgsound", "big", "blink", "blockquote", "body", "br", "button", "canvas", "caption", "center", "cite", "code", "col", "colgroup", "content", "data", "datalist", "dd", "del", "details", "dfn", "dialog", "dir", "div", "dl", "dt", "em", "embed", "fieldset", "figcaption", "figure", "font", "footer", "form", "frame", "frameset", "head", "header", "hgroup", "hr", "html", "i", "iframe", "image", "img", "input", "ins", "kbd", "keygen", "label", "legend", "li", "link", "main", "map", "mark", "marquee", "menu", "menuitem", "meta", "meter", "nav", "nobr", "noembed", "noframes", "noscript", "object", "ol", "optgroup", "option", "output", "p", "param", "picture", "plaintext", "portal", "pre", "progress", "q", "rb", "rp", "rt", "rtc", "ruby", "s", "samp", "script", "section", "select", "shadow", "slot", "small", "source", "spacer", "span", "strike", "strong", "style", "sub", "summary", "sup", "table", "tbody", "td", "template", "textarea", "tfoot", "th", "thead", "time", "title", "tr", "track", "tt", "u", "ul", "var", "video", "wbr", "xmp", "input", "h1", "h2", "h3", "h4", "h5", "h6"]);
215
+ const DOMElements = /*#__PURE__*/ new Set([
216
+ "html",
217
+ "base",
218
+ "head",
219
+ "link",
220
+ "meta",
221
+ "style",
222
+ "title",
223
+ "body",
224
+ "address",
225
+ "article",
226
+ "aside",
227
+ "footer",
228
+ "header",
229
+ "main",
230
+ "nav",
231
+ "section",
232
+ "body",
233
+ "blockquote",
234
+ "dd",
235
+ "div",
236
+ "dl",
237
+ "dt",
238
+ "figcaption",
239
+ "figure",
240
+ "hr",
241
+ "li",
242
+ "ol",
243
+ "p",
244
+ "pre",
245
+ "ul",
246
+ "a",
247
+ "abbr",
248
+ "b",
249
+ "bdi",
250
+ "bdo",
251
+ "br",
252
+ "cite",
253
+ "code",
254
+ "data",
255
+ "dfn",
256
+ "em",
257
+ "i",
258
+ "kbd",
259
+ "mark",
260
+ "q",
261
+ "rp",
262
+ "rt",
263
+ "ruby",
264
+ "s",
265
+ "samp",
266
+ "small",
267
+ "span",
268
+ "strong",
269
+ "sub",
270
+ "sup",
271
+ "time",
272
+ "u",
273
+ "var",
274
+ "wbr",
275
+ "area",
276
+ "audio",
277
+ "img",
278
+ "map",
279
+ "track",
280
+ "video",
281
+ "embed",
282
+ "iframe",
283
+ "object",
284
+ "param",
285
+ "picture",
286
+ "portal",
287
+ "source",
288
+ "svg",
289
+ "math",
290
+ "canvas",
291
+ "noscript",
292
+ "script",
293
+ "del",
294
+ "ins",
295
+ "caption",
296
+ "col",
297
+ "colgroup",
298
+ "table",
299
+ "tbody",
300
+ "td",
301
+ "tfoot",
302
+ "th",
303
+ "thead",
304
+ "tr",
305
+ "button",
306
+ "datalist",
307
+ "fieldset",
308
+ "form",
309
+ "input",
310
+ "label",
311
+ "legend",
312
+ "meter",
313
+ "optgroup",
314
+ "option",
315
+ "output",
316
+ "progress",
317
+ "select",
318
+ "textarea",
319
+ "details",
320
+ "dialog",
321
+ "menu",
322
+ "summary",
323
+ "details",
324
+ "slot",
325
+ "template",
326
+ "acronym",
327
+ "applet",
328
+ "basefont",
329
+ "bgsound",
330
+ "big",
331
+ "blink",
332
+ "center",
333
+ "content",
334
+ "dir",
335
+ "font",
336
+ "frame",
337
+ "frameset",
338
+ "hgroup",
339
+ "image",
340
+ "keygen",
341
+ "marquee",
342
+ "menuitem",
343
+ "nobr",
344
+ "noembed",
345
+ "noframes",
346
+ "plaintext",
347
+ "rb",
348
+ "rtc",
349
+ "shadow",
350
+ "spacer",
351
+ "strike",
352
+ "tt",
353
+ "xmp",
354
+ "a",
355
+ "abbr",
356
+ "acronym",
357
+ "address",
358
+ "applet",
359
+ "area",
360
+ "article",
361
+ "aside",
362
+ "audio",
363
+ "b",
364
+ "base",
365
+ "basefont",
366
+ "bdi",
367
+ "bdo",
368
+ "bgsound",
369
+ "big",
370
+ "blink",
371
+ "blockquote",
372
+ "body",
373
+ "br",
374
+ "button",
375
+ "canvas",
376
+ "caption",
377
+ "center",
378
+ "cite",
379
+ "code",
380
+ "col",
381
+ "colgroup",
382
+ "content",
383
+ "data",
384
+ "datalist",
385
+ "dd",
386
+ "del",
387
+ "details",
388
+ "dfn",
389
+ "dialog",
390
+ "dir",
391
+ "div",
392
+ "dl",
393
+ "dt",
394
+ "em",
395
+ "embed",
396
+ "fieldset",
397
+ "figcaption",
398
+ "figure",
399
+ "font",
400
+ "footer",
401
+ "form",
402
+ "frame",
403
+ "frameset",
404
+ "head",
405
+ "header",
406
+ "hgroup",
407
+ "hr",
408
+ "html",
409
+ "i",
410
+ "iframe",
411
+ "image",
412
+ "img",
413
+ "input",
414
+ "ins",
415
+ "kbd",
416
+ "keygen",
417
+ "label",
418
+ "legend",
419
+ "li",
420
+ "link",
421
+ "main",
422
+ "map",
423
+ "mark",
424
+ "marquee",
425
+ "menu",
426
+ "menuitem",
427
+ "meta",
428
+ "meter",
429
+ "nav",
430
+ "nobr",
431
+ "noembed",
432
+ "noframes",
433
+ "noscript",
434
+ "object",
435
+ "ol",
436
+ "optgroup",
437
+ "option",
438
+ "output",
439
+ "p",
440
+ "param",
441
+ "picture",
442
+ "plaintext",
443
+ "portal",
444
+ "pre",
445
+ "progress",
446
+ "q",
447
+ "rb",
448
+ "rp",
449
+ "rt",
450
+ "rtc",
451
+ "ruby",
452
+ "s",
453
+ "samp",
454
+ "script",
455
+ "section",
456
+ "select",
457
+ "shadow",
458
+ "slot",
459
+ "small",
460
+ "source",
461
+ "spacer",
462
+ "span",
463
+ "strike",
464
+ "strong",
465
+ "style",
466
+ "sub",
467
+ "summary",
468
+ "sup",
469
+ "table",
470
+ "tbody",
471
+ "td",
472
+ "template",
473
+ "textarea",
474
+ "tfoot",
475
+ "th",
476
+ "thead",
477
+ "time",
478
+ "title",
479
+ "tr",
480
+ "track",
481
+ "tt",
482
+ "u",
483
+ "ul",
484
+ "var",
485
+ "video",
486
+ "wbr",
487
+ "xmp",
488
+ "input",
489
+ "h1",
490
+ "h2",
491
+ "h3",
492
+ "h4",
493
+ "h5",
494
+ "h6"
495
+ ]);
51
496
 
52
497
  function reconcileArrays(parentNode, a, b) {
53
498
  let bLength = b.length,
@@ -68,7 +513,7 @@ function reconcileArrays(parentNode, a, b) {
68
513
  bEnd--;
69
514
  }
70
515
  if (aEnd === aStart) {
71
- const node = bEnd < bLength ? bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart] : after;
516
+ const node = bEnd < bLength ? (bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart]) : after;
72
517
  while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);
73
518
  } else if (bEnd === bStart) {
74
519
  while (aStart < aEnd) {
@@ -111,21 +556,25 @@ function render(code, element, init, options = {}) {
111
556
  let disposer;
112
557
  createRoot(dispose => {
113
558
  disposer = dispose;
114
- element === document ? code() : insert(element, code(), element.firstChild ? null : undefined, init);
559
+ element === document
560
+ ? code()
561
+ : insert(element, code(), element.firstChild ? null : undefined, init);
115
562
  }, options.owner);
116
563
  return () => {
117
564
  disposer();
118
565
  element.textContent = "";
119
566
  };
120
567
  }
121
- function template(html, isCE, isSVG) {
568
+ function template(html, isImportNode, isSVG) {
122
569
  let node;
123
570
  const create = () => {
124
571
  const t = document.createElement("template");
125
572
  t.innerHTML = html;
126
573
  return isSVG ? t.content.firstChild.firstChild : t.content.firstChild;
127
574
  };
128
- const fn = isCE ? () => untrack(() => document.importNode(node || (node = create()), true)) : () => (node || (node = create())).cloneNode(true);
575
+ const fn = isImportNode
576
+ ? () => untrack(() => document.importNode(node || (node = create()), true))
577
+ : () => (node || (node = create())).cloneNode(true);
129
578
  fn.cloneNode = fn;
130
579
  return fn;
131
580
  }
@@ -151,15 +600,22 @@ function setProperty(node, name, value) {
151
600
  }
152
601
  function setAttribute(node, name, value) {
153
602
  if (isHydrating(node)) return;
154
- if (value == null) node.removeAttribute(name);else node.setAttribute(name, value);
603
+ if (value == null) node.removeAttribute(name);
604
+ else node.setAttribute(name, value);
155
605
  }
156
606
  function setAttributeNS(node, namespace, name, value) {
157
607
  if (isHydrating(node)) return;
158
- if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);
608
+ if (value == null) node.removeAttributeNS(namespace, name);
609
+ else node.setAttributeNS(namespace, name, value);
610
+ }
611
+ function setBoolAttribute(node, name, value) {
612
+ if (isHydrating(node)) return;
613
+ value ? node.setAttribute(name, "") : node.removeAttribute(name);
159
614
  }
160
615
  function className(node, value) {
161
616
  if (isHydrating(node)) return;
162
- if (value == null) node.removeAttribute("class");else node.className = value;
617
+ if (value == null) node.removeAttribute("class");
618
+ else node.className = value;
163
619
  }
164
620
  function addEventListener(node, name, handler, delegate) {
165
621
  if (delegate) {
@@ -169,8 +625,8 @@ function addEventListener(node, name, handler, delegate) {
169
625
  } else node[`$$${name}`] = handler;
170
626
  } else if (Array.isArray(handler)) {
171
627
  const handlerFn = handler[0];
172
- node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));
173
- } else node.addEventListener(name, handler);
628
+ node.addEventListener(name, (handler[0] = e => handlerFn.call(node, handler[1], e)));
629
+ } else node.addEventListener(name, handler, typeof handler !== "function" && handler);
174
630
  }
175
631
  function classList(node, value, prev = {}) {
176
632
  const classKeys = Object.keys(value || {}),
@@ -194,7 +650,7 @@ function classList(node, value, prev = {}) {
194
650
  function style(node, value, prev) {
195
651
  if (!value) return prev ? setAttribute(node, "style") : value;
196
652
  const nodeStyle = node.style;
197
- if (typeof value === "string") return nodeStyle.cssText = value;
653
+ if (typeof value === "string") return (nodeStyle.cssText = value);
198
654
  typeof prev === "string" && (nodeStyle.cssText = prev = undefined);
199
655
  prev || (prev = {});
200
656
  value || (value = {});
@@ -215,7 +671,9 @@ function style(node, value, prev) {
215
671
  function spread(node, props = {}, isSVG, skipChildren) {
216
672
  const prevProps = {};
217
673
  if (!skipChildren) {
218
- createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));
674
+ createRenderEffect(
675
+ () => (prevProps.children = insertExpression(node, props.children, prevProps.children))
676
+ );
219
677
  }
220
678
  createRenderEffect(() => typeof props.ref === "function" && use(props.ref, node));
221
679
  createRenderEffect(() => assign(node, props, isSVG, true, prevProps, true));
@@ -244,7 +702,7 @@ function assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = fals
244
702
  for (const prop in prevProps) {
245
703
  if (!(prop in props)) {
246
704
  if (prop === "children") continue;
247
- prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);
705
+ prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef, props);
248
706
  }
249
707
  }
250
708
  for (const prop in props) {
@@ -253,7 +711,7 @@ function assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = fals
253
711
  continue;
254
712
  }
255
713
  const value = props[prop];
256
- prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);
714
+ prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef, props);
257
715
  }
258
716
  }
259
717
  function hydrate$1(code, element, options = {}) {
@@ -279,7 +737,7 @@ function getNextElement(template) {
279
737
  let node,
280
738
  key,
281
739
  hydrating = isHydrating();
282
- if (!hydrating || !(node = sharedConfig.registry.get(key = getHydrationKey()))) {
740
+ if (!hydrating || !(node = sharedConfig.registry.get((key = getHydrationKey())))) {
283
741
  return template();
284
742
  }
285
743
  if (sharedConfig.completed) sharedConfig.completed.add(node);
@@ -298,7 +756,8 @@ function getNextMarker(start) {
298
756
  while (end) {
299
757
  if (end.nodeType === 8) {
300
758
  const v = end.nodeValue;
301
- if (v === "$") count++;else if (v === "/") {
759
+ if (v === "$") count++;
760
+ else if (v === "/") {
302
761
  if (count === 0) return [end, current];
303
762
  count--;
304
763
  }
@@ -312,10 +771,8 @@ function getNextMarker(start) {
312
771
  function runHydrationEvents() {
313
772
  if (sharedConfig.events && !sharedConfig.events.queued) {
314
773
  queueMicrotask(() => {
315
- const {
316
- completed,
317
- events
318
- } = sharedConfig;
774
+ const { completed, events } = sharedConfig;
775
+ if (!events) return;
319
776
  events.queued = false;
320
777
  while (events.length) {
321
778
  const [el, e] = events[0];
@@ -339,9 +796,10 @@ function toPropertyName(name) {
339
796
  }
340
797
  function toggleClassKey(node, key, value) {
341
798
  const classNames = key.trim().split(/\s+/);
342
- for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);
799
+ for (let i = 0, nameLen = classNames.length; i < nameLen; i++)
800
+ node.classList.toggle(classNames[i], value);
343
801
  }
344
- function assignProp(node, prop, value, prev, isSVG, skipRef) {
802
+ function assignProp(node, prop, value, prev, isSVG, skipRef, props) {
345
803
  let isCE, isProp, isChildProp, propAlias, forceProp;
346
804
  if (prop === "style") return style(node, value, prev);
347
805
  if (prop === "classList") return classList(node, value, prev);
@@ -350,8 +808,8 @@ function assignProp(node, prop, value, prev, isSVG, skipRef) {
350
808
  if (!skipRef) value(node);
351
809
  } else if (prop.slice(0, 3) === "on:") {
352
810
  const e = prop.slice(3);
353
- prev && node.removeEventListener(e, prev);
354
- value && node.addEventListener(e, value);
811
+ prev && node.removeEventListener(e, prev, typeof prev !== "function" && prev);
812
+ value && node.addEventListener(e, value, typeof value !== "function" && value);
355
813
  } else if (prop.slice(0, 10) === "oncapture:") {
356
814
  const e = prop.slice(10);
357
815
  prev && node.removeEventListener(e, prev, true);
@@ -369,15 +827,26 @@ function assignProp(node, prop, value, prev, isSVG, skipRef) {
369
827
  }
370
828
  } else if (prop.slice(0, 5) === "attr:") {
371
829
  setAttribute(node, prop.slice(5), value);
372
- } else if ((forceProp = prop.slice(0, 5) === "prop:") || (isChildProp = ChildProperties.has(prop)) || !isSVG && ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) {
830
+ } else if (prop.slice(0, 5) === "bool:") {
831
+ setBoolAttribute(node, prop.slice(5), value);
832
+ } else if (
833
+ (forceProp = prop.slice(0, 5) === "prop:") ||
834
+ (isChildProp = ChildProperties.has(prop)) ||
835
+ (!isSVG &&
836
+ ((propAlias = getPropAlias(prop, node.tagName)) || (isProp = Properties.has(prop)))) ||
837
+ (isCE = node.nodeName.includes("-") || "is" in props)
838
+ ) {
373
839
  if (forceProp) {
374
840
  prop = prop.slice(5);
375
841
  isProp = true;
376
842
  } else if (isHydrating(node)) return value;
377
- if (prop === "class" || prop === "className") className(node, value);else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[propAlias || prop] = value;
843
+ if (prop === "class" || prop === "className") className(node, value);
844
+ else if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;
845
+ else node[propAlias || prop] = value;
378
846
  } else {
379
847
  const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
380
- if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);
848
+ if (ns) setAttributeNS(node, ns, prop, value);
849
+ else setAttribute(node, Aliases[prop] || prop, value);
381
850
  }
382
851
  return value;
383
852
  }
@@ -385,14 +854,28 @@ function eventHandler(e) {
385
854
  if (sharedConfig.registry && sharedConfig.events) {
386
855
  if (sharedConfig.events.find(([el, ev]) => ev === e)) return;
387
856
  }
857
+ let node = e.target;
388
858
  const key = `$$${e.type}`;
389
- let node = e.composedPath && e.composedPath()[0] || e.target;
390
- if (e.target !== node) {
859
+ const oriTarget = e.target;
860
+ const oriCurrentTarget = e.currentTarget;
861
+ const retarget = value =>
391
862
  Object.defineProperty(e, "target", {
392
863
  configurable: true,
393
- value: node
864
+ value
394
865
  });
395
- }
866
+ const handleNode = () => {
867
+ const handler = node[key];
868
+ if (handler && !node.disabled) {
869
+ const data = node[`${key}Data`];
870
+ data !== undefined ? handler.call(node, data, e) : handler.call(node, e);
871
+ if (e.cancelBubble) return;
872
+ }
873
+ node.host && node.contains(e.target) && !node.host._$host && retarget(node.host);
874
+ return true;
875
+ };
876
+ const walkUpTree = () => {
877
+ while (handleNode() && (node = node._$host || node.parentNode || node.host));
878
+ };
396
879
  Object.defineProperty(e, "currentTarget", {
397
880
  configurable: true,
398
881
  get() {
@@ -400,15 +883,23 @@ function eventHandler(e) {
400
883
  }
401
884
  });
402
885
  if (sharedConfig.registry && !sharedConfig.done) sharedConfig.done = _$HY.done = true;
403
- while (node) {
404
- const handler = node[key];
405
- if (handler && !node.disabled) {
406
- const data = node[`${key}Data`];
407
- data !== undefined ? handler.call(node, data, e) : handler.call(node, e);
408
- if (e.cancelBubble) return;
886
+ if (e.composedPath) {
887
+ const path = e.composedPath();
888
+ retarget(path[0]);
889
+ for (let i = 0; i < path.length - 2; i++) {
890
+ node = path[i];
891
+ if (!handleNode()) break;
892
+ if (node._$host) {
893
+ node = node._$host;
894
+ walkUpTree();
895
+ break;
896
+ }
897
+ if (node.parentNode === oriCurrentTarget) {
898
+ break;
899
+ }
409
900
  }
410
- node = node._$host || node.parentNode || node.host;
411
- }
901
+ } else walkUpTree();
902
+ retarget(oriTarget);
412
903
  }
413
904
  function insertExpression(parent, value, current, marker, unwrapArray) {
414
905
  const hydrating = isHydrating(parent);
@@ -417,7 +908,8 @@ function insertExpression(parent, value, current, marker, unwrapArray) {
417
908
  let cleaned = [];
418
909
  for (let i = 0; i < current.length; i++) {
419
910
  const node = current[i];
420
- if (node.nodeType === 8 && node.data.slice(0, 2) === "!$") node.remove();else cleaned.push(node);
911
+ if (node.nodeType === 8 && node.data.slice(0, 2) === "!$") node.remove();
912
+ else cleaned.push(node);
421
913
  }
422
914
  current = cleaned;
423
915
  }
@@ -425,7 +917,7 @@ function insertExpression(parent, value, current, marker, unwrapArray) {
425
917
  if (value === current) return current;
426
918
  const t = typeof value,
427
919
  multi = marker !== undefined;
428
- parent = multi && current[0] && current[0].parentNode || parent;
920
+ parent = (multi && current[0] && current[0].parentNode) || parent;
429
921
  if (t === "string" || t === "number") {
430
922
  if (hydrating) return current;
431
923
  if (t === "number") {
@@ -457,17 +949,17 @@ function insertExpression(parent, value, current, marker, unwrapArray) {
457
949
  const array = [];
458
950
  const currentArray = current && Array.isArray(current);
459
951
  if (normalizeIncomingArray(array, value, current, unwrapArray)) {
460
- createRenderEffect(() => current = insertExpression(parent, array, current, marker, true));
952
+ createRenderEffect(() => (current = insertExpression(parent, array, current, marker, true)));
461
953
  return () => current;
462
954
  }
463
955
  if (hydrating) {
464
956
  if (!array.length) return current;
465
- if (marker === undefined) return current = [...parent.childNodes];
957
+ if (marker === undefined) return (current = [...parent.childNodes]);
466
958
  let node = array[0];
467
959
  if (node.parentNode !== parent) return current;
468
960
  const nodes = [node];
469
961
  while ((node = node.nextSibling) !== marker) nodes.push(node);
470
- return current = nodes;
962
+ return (current = nodes);
471
963
  }
472
964
  if (array.length === 0) {
473
965
  current = cleanChildren(parent, current, marker);
@@ -482,15 +974,15 @@ function insertExpression(parent, value, current, marker, unwrapArray) {
482
974
  }
483
975
  current = array;
484
976
  } else if (value.nodeType) {
485
- if (hydrating && value.parentNode) return current = multi ? [value] : value;
977
+ if (hydrating && value.parentNode) return (current = multi ? [value] : value);
486
978
  if (Array.isArray(current)) {
487
- if (multi) return current = cleanChildren(parent, current, marker, value);
979
+ if (multi) return (current = cleanChildren(parent, current, marker, value));
488
980
  cleanChildren(parent, current, null, value);
489
981
  } else if (current == null || current === "" || !parent.firstChild) {
490
982
  parent.appendChild(value);
491
983
  } else parent.replaceChild(value, parent.firstChild);
492
984
  current = value;
493
- } else ;
985
+ } else;
494
986
  return current;
495
987
  }
496
988
  function normalizeIncomingArray(normalized, array, current, unwrap) {
@@ -499,21 +991,28 @@ function normalizeIncomingArray(normalized, array, current, unwrap) {
499
991
  let item = array[i],
500
992
  prev = current && current[normalized.length],
501
993
  t;
502
- if (item == null || item === true || item === false) ; else if ((t = typeof item) === "object" && item.nodeType) {
994
+ if (item == null || item === true || item === false);
995
+ else if ((t = typeof item) === "object" && item.nodeType) {
503
996
  normalized.push(item);
504
997
  } else if (Array.isArray(item)) {
505
998
  dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;
506
999
  } else if (t === "function") {
507
1000
  if (unwrap) {
508
1001
  while (typeof item === "function") item = item();
509
- dynamic = normalizeIncomingArray(normalized, Array.isArray(item) ? item : [item], Array.isArray(prev) ? prev : [prev]) || dynamic;
1002
+ dynamic =
1003
+ normalizeIncomingArray(
1004
+ normalized,
1005
+ Array.isArray(item) ? item : [item],
1006
+ Array.isArray(prev) ? prev : [prev]
1007
+ ) || dynamic;
510
1008
  } else {
511
1009
  normalized.push(item);
512
1010
  dynamic = true;
513
1011
  }
514
1012
  } else {
515
1013
  const value = String(item);
516
- if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);else normalized.push(document.createTextNode(value));
1014
+ if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);
1015
+ else normalized.push(document.createTextNode(value));
517
1016
  }
518
1017
  }
519
1018
  return dynamic;
@@ -522,7 +1021,7 @@ function appendNodes(parent, array, marker = null) {
522
1021
  for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);
523
1022
  }
524
1023
  function cleanChildren(parent, current, marker, replacement) {
525
- if (marker === undefined) return parent.textContent = "";
1024
+ if (marker === undefined) return (parent.textContent = "");
526
1025
  const node = replacement || document.createTextNode("");
527
1026
  if (current.length) {
528
1027
  let inserted = false;
@@ -530,7 +1029,9 @@ function cleanChildren(parent, current, marker, replacement) {
530
1029
  const el = current[i];
531
1030
  if (node !== el) {
532
1031
  const isParent = el.parentNode === parent;
533
- if (!inserted && !i) isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);else isParent && el.remove();
1032
+ if (!inserted && !i)
1033
+ isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);
1034
+ else isParent && el.remove();
534
1035
  } else inserted = true;
535
1036
  }
536
1037
  } else parent.insertBefore(node, marker);
@@ -541,7 +1042,8 @@ function gatherHydratable(element, root) {
541
1042
  for (let i = 0; i < templates.length; i++) {
542
1043
  const node = templates[i];
543
1044
  const key = node.getAttribute("data-hk");
544
- if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key)) sharedConfig.registry.set(key, node);
1045
+ if ((!root || key.startsWith(root)) && !sharedConfig.registry.has(key))
1046
+ sharedConfig.registry.set(key, node);
545
1047
  }
546
1048
  }
547
1049
  function getHydrationKey() {
@@ -593,42 +1095,47 @@ const hydrate = (...args) => {
593
1095
  return hydrate$1(...args);
594
1096
  };
595
1097
  function Portal(props) {
596
- const {
597
- useShadow
598
- } = props,
1098
+ const { useShadow } = props,
599
1099
  marker = document.createTextNode(""),
600
1100
  mount = () => props.mount || document.body,
601
1101
  owner = getOwner();
602
1102
  let content;
603
1103
  let hydrating = !!sharedConfig.context;
604
- createEffect(() => {
605
- if (hydrating) getOwner().user = hydrating = false;
606
- content || (content = runWithOwner(owner, () => createMemo(() => props.children)));
607
- const el = mount();
608
- if (el instanceof HTMLHeadElement) {
609
- const [clean, setClean] = createSignal(false);
610
- const cleanup = () => setClean(true);
611
- createRoot(dispose => insert(el, () => !clean() ? content() : dispose(), null));
612
- onCleanup(cleanup);
613
- } else {
614
- const container = createElement(props.isSVG ? "g" : "div", props.isSVG),
615
- renderRoot = useShadow && container.attachShadow ? container.attachShadow({
616
- mode: "open"
617
- }) : container;
618
- Object.defineProperty(container, "_$host", {
619
- get() {
620
- return marker.parentNode;
621
- },
622
- configurable: true
623
- });
624
- insert(renderRoot, content);
625
- el.appendChild(container);
626
- props.ref && props.ref(container);
627
- onCleanup(() => el.removeChild(container));
1104
+ createEffect(
1105
+ () => {
1106
+ if (hydrating) getOwner().user = hydrating = false;
1107
+ content || (content = runWithOwner(owner, () => createMemo(() => props.children)));
1108
+ const el = mount();
1109
+ if (el instanceof HTMLHeadElement) {
1110
+ const [clean, setClean] = createSignal(false);
1111
+ const cleanup = () => setClean(true);
1112
+ createRoot(dispose => insert(el, () => (!clean() ? content() : dispose()), null));
1113
+ onCleanup(cleanup);
1114
+ } else {
1115
+ const container = createElement(props.isSVG ? "g" : "div", props.isSVG),
1116
+ renderRoot =
1117
+ useShadow && container.attachShadow
1118
+ ? container.attachShadow({
1119
+ mode: "open"
1120
+ })
1121
+ : container;
1122
+ Object.defineProperty(container, "_$host", {
1123
+ get() {
1124
+ return marker.parentNode;
1125
+ },
1126
+ configurable: true
1127
+ });
1128
+ insert(renderRoot, content);
1129
+ el.appendChild(container);
1130
+ props.ref && props.ref(container);
1131
+ onCleanup(() => el.removeChild(container));
1132
+ }
1133
+ },
1134
+ undefined,
1135
+ {
1136
+ render: !hydrating
628
1137
  }
629
- }, undefined, {
630
- render: !hydrating
631
- });
1138
+ );
632
1139
  return marker;
633
1140
  }
634
1141
  function Dynamic(props) {
@@ -648,4 +1155,62 @@ function Dynamic(props) {
648
1155
  });
649
1156
  }
650
1157
 
651
- export { Aliases, voidFn as Assets, ChildProperties, DOMElements, DelegatedEvents, Dynamic, Hydration, voidFn as HydrationScript, NoHydration, Portal, Properties, RequestContext, SVGElements, SVGNamespace, addEventListener, assign, classList, className, clearDelegatedEvents, delegateEvents, dynamicProperty, escape, voidFn as generateHydrationScript, voidFn as getAssets, getHydrationKey, getNextElement, getNextMarker, getNextMatch, getPropAlias, voidFn as getRequestEvent, hydrate, innerHTML, insert, isDev, isServer, render, renderToStream, renderToString, renderToStringAsync, resolveSSRNode, runHydrationEvents, setAttribute, setAttributeNS, setProperty, spread, ssr, ssrAttribute, ssrClassList, ssrElement, ssrHydrationKey, ssrSpread, ssrStyle, style, template, use, voidFn as useAssets };
1158
+ export {
1159
+ Aliases,
1160
+ voidFn as Assets,
1161
+ ChildProperties,
1162
+ DOMElements,
1163
+ DelegatedEvents,
1164
+ Dynamic,
1165
+ Hydration,
1166
+ voidFn as HydrationScript,
1167
+ NoHydration,
1168
+ Portal,
1169
+ Properties,
1170
+ RequestContext,
1171
+ SVGElements,
1172
+ SVGNamespace,
1173
+ addEventListener,
1174
+ assign,
1175
+ classList,
1176
+ className,
1177
+ clearDelegatedEvents,
1178
+ delegateEvents,
1179
+ dynamicProperty,
1180
+ escape,
1181
+ voidFn as generateHydrationScript,
1182
+ voidFn as getAssets,
1183
+ getHydrationKey,
1184
+ getNextElement,
1185
+ getNextMarker,
1186
+ getNextMatch,
1187
+ getPropAlias,
1188
+ voidFn as getRequestEvent,
1189
+ hydrate,
1190
+ innerHTML,
1191
+ insert,
1192
+ isDev,
1193
+ isServer,
1194
+ render,
1195
+ renderToStream,
1196
+ renderToString,
1197
+ renderToStringAsync,
1198
+ resolveSSRNode,
1199
+ runHydrationEvents,
1200
+ setAttribute,
1201
+ setAttributeNS,
1202
+ setBoolAttribute,
1203
+ setProperty,
1204
+ spread,
1205
+ ssr,
1206
+ ssrAttribute,
1207
+ ssrClassList,
1208
+ ssrElement,
1209
+ ssrHydrationKey,
1210
+ ssrSpread,
1211
+ ssrStyle,
1212
+ style,
1213
+ template,
1214
+ use,
1215
+ voidFn as useAssets
1216
+ };