solid-js 1.5.6 → 1.6.0-beta.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.
package/dist/solid.js CHANGED
@@ -275,10 +275,6 @@ function createResource(pSource, pFetcher, pOptions) {
275
275
  loadedUnderTransition = false;
276
276
  runUpdates(() => {
277
277
  Transition.running = true;
278
- if (!Transition.promises.size) {
279
- Effects.push.apply(Effects, Transition.effects);
280
- Transition.effects = [];
281
- }
282
278
  completeLoad(v, error);
283
279
  }, false);
284
280
  } else completeLoad(v, error);
@@ -303,7 +299,7 @@ function createResource(pSource, pFetcher, pOptions) {
303
299
  createComputed(() => {
304
300
  track();
305
301
  if (pr) {
306
- if (c.resolved && Transition) Transition.promises.add(pr);else if (!contexts.has(c)) {
302
+ if (c.resolved && Transition && Transition.running) Transition.promises.add(pr);else if (!contexts.has(c)) {
307
303
  c.increment();
308
304
  contexts.add(c);
309
305
  }
@@ -621,7 +617,9 @@ function updateComputation(node) {
621
617
  queueMicrotask(() => {
622
618
  runUpdates(() => {
623
619
  Transition && (Transition.running = true);
620
+ Listener = Owner = node;
624
621
  runComputation(node, node.tValue, time);
622
+ Listener = Owner = null;
625
623
  }, false);
626
624
  });
627
625
  }
@@ -737,36 +735,38 @@ function completeUpdates(wait) {
737
735
  }
738
736
  if (wait) return;
739
737
  let res;
740
- if (Transition && Transition.running) {
741
- if (Transition.promises.size || Transition.queue.size) {
738
+ if (Transition) {
739
+ if (!Transition.promises.size && !Transition.queue.size) {
740
+ const sources = Transition.sources;
741
+ const disposed = Transition.disposed;
742
+ Effects.push.apply(Effects, Transition.effects);
743
+ res = Transition.resolve;
744
+ for (const e of Effects) {
745
+ "tState" in e && (e.state = e.tState);
746
+ delete e.tState;
747
+ }
748
+ Transition = null;
749
+ runUpdates(() => {
750
+ for (const d of disposed) cleanNode(d);
751
+ for (const v of sources) {
752
+ v.value = v.tValue;
753
+ if (v.owned) {
754
+ for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);
755
+ }
756
+ if (v.tOwned) v.owned = v.tOwned;
757
+ delete v.tValue;
758
+ delete v.tOwned;
759
+ v.tState = 0;
760
+ }
761
+ setTransPending(false);
762
+ }, false);
763
+ } else if (Transition.running) {
742
764
  Transition.running = false;
743
765
  Transition.effects.push.apply(Transition.effects, Effects);
744
766
  Effects = null;
745
767
  setTransPending(true);
746
768
  return;
747
769
  }
748
- const sources = Transition.sources;
749
- const disposed = Transition.disposed;
750
- res = Transition.resolve;
751
- for (const e of Effects) {
752
- "tState" in e && (e.state = e.tState);
753
- delete e.tState;
754
- }
755
- Transition = null;
756
- runUpdates(() => {
757
- for (const d of disposed) cleanNode(d);
758
- for (const v of sources) {
759
- v.value = v.tValue;
760
- if (v.owned) {
761
- for (let i = 0, len = v.owned.length; i < len; i++) cleanNode(v.owned[i]);
762
- }
763
- if (v.tOwned) v.owned = v.tOwned;
764
- delete v.tValue;
765
- delete v.tOwned;
766
- v.tState = 0;
767
- }
768
- setTransPending(false);
769
- }, false);
770
770
  }
771
771
  const e = Effects;
772
772
  Effects = null;
@@ -787,10 +787,6 @@ function scheduleQueue(queue) {
787
787
  runUpdates(() => {
788
788
  Transition.running = true;
789
789
  runTop(item);
790
- if (!tasks.size) {
791
- Effects.push.apply(Effects, Transition.effects);
792
- Transition.effects = [];
793
- }
794
790
  }, false);
795
791
  Transition && (Transition.running = false);
796
792
  });
@@ -1173,29 +1169,41 @@ function resolveSource(s) {
1173
1169
  return (s = typeof s === "function" ? s() : s) == null ? {} : s;
1174
1170
  }
1175
1171
  function mergeProps(...sources) {
1176
- return new Proxy({
1177
- get(property) {
1178
- for (let i = sources.length - 1; i >= 0; i--) {
1179
- const v = resolveSource(sources[i])[property];
1180
- if (v !== undefined) return v;
1181
- }
1182
- },
1183
- has(property) {
1184
- for (let i = sources.length - 1; i >= 0; i--) {
1185
- if (property in resolveSource(sources[i])) return true;
1172
+ if (sources.some(s => s && ($PROXY in s || typeof s === "function"))) {
1173
+ return new Proxy({
1174
+ get(property) {
1175
+ for (let i = sources.length - 1; i >= 0; i--) {
1176
+ const v = resolveSource(sources[i])[property];
1177
+ if (v !== undefined) return v;
1178
+ }
1179
+ },
1180
+ has(property) {
1181
+ for (let i = sources.length - 1; i >= 0; i--) {
1182
+ if (property in resolveSource(sources[i])) return true;
1183
+ }
1184
+ return false;
1185
+ },
1186
+ keys() {
1187
+ const keys = [];
1188
+ for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1189
+ return [...new Set(keys)];
1186
1190
  }
1187
- return false;
1188
- },
1189
- keys() {
1190
- const keys = [];
1191
- for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1192
- return [...new Set(keys)];
1191
+ }, propTraps);
1192
+ }
1193
+ const target = {};
1194
+ for (let i = 0; i < sources.length; i++) {
1195
+ if (sources[i]) {
1196
+ const descriptors = Object.getOwnPropertyDescriptors(sources[i]);
1197
+ Object.defineProperties(target, descriptors);
1193
1198
  }
1194
- }, propTraps);
1199
+ }
1200
+ return target;
1195
1201
  }
1196
1202
  function splitProps(props, ...keys) {
1197
1203
  const blocked = new Set(keys.flat());
1198
1204
  const descriptors = Object.getOwnPropertyDescriptors(props);
1205
+ const isProxy = ($PROXY in props);
1206
+ if (!isProxy) keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));
1199
1207
  const res = keys.map(k => {
1200
1208
  const clone = {};
1201
1209
  for (let i = 0; i < k.length; i++) {
@@ -1211,17 +1219,19 @@ function splitProps(props, ...keys) {
1211
1219
  }
1212
1220
  return clone;
1213
1221
  });
1214
- res.push(new Proxy({
1215
- get(property) {
1216
- return blocked.has(property) ? undefined : props[property];
1217
- },
1218
- has(property) {
1219
- return blocked.has(property) ? false : property in props;
1220
- },
1221
- keys() {
1222
- return Object.keys(props).filter(k => !blocked.has(k));
1223
- }
1224
- }, propTraps));
1222
+ if (isProxy) {
1223
+ res.push(new Proxy({
1224
+ get(property) {
1225
+ return blocked.has(property) ? undefined : props[property];
1226
+ },
1227
+ has(property) {
1228
+ return blocked.has(property) ? false : property in props;
1229
+ },
1230
+ keys() {
1231
+ return Object.keys(props).filter(k => !blocked.has(k));
1232
+ }
1233
+ }, propTraps));
1234
+ }
1225
1235
  return res;
1226
1236
  }
1227
1237
  function lazy(fn) {
@@ -196,7 +196,7 @@ function createHTML(r, {
196
196
  templates[i].innerHTML = html[i];
197
197
  const nomarkers = templates[i].content.querySelectorAll("script,style");
198
198
  for (let j = 0; j < nomarkers.length; j++) {
199
- const d = nomarkers[j].firstChild.data || "";
199
+ const d = nomarkers[j].firstChild?.data || "";
200
200
  if (d.indexOf(marker) > -1) {
201
201
  const parts = d.split(marker).reduce((memo, p, i) => {
202
202
  i && memo.push("");
@@ -405,15 +405,35 @@ function createHTML(r, {
405
405
  const isSVG = r.SVGElements.has(node.name);
406
406
  const isCE = node.name.includes("-");
407
407
  options.hasCustomElement = isCE;
408
- for (let i = 0; i < keys.length; i++) {
409
- const name = keys[i],
410
- value = node.attrs[name];
411
- if (value.includes("###")) {
412
- delete node.attrs[name];
413
- parseAttribute(tag, name, value, isSVG, isCE, options);
414
- } else if (name === "###") {
415
- delete node.attrs[name];
416
- options.exprs.push(`r.spread(${tag},exprs[${options.counter++}],${isSVG},${!!node.children.length})`);
408
+ if (keys.includes("###")) {
409
+ const spreadArgs = [];
410
+ let current = "";
411
+ for (let i = 0; i < keys.length; i++) {
412
+ const name = keys[i],
413
+ value = node.attrs[name];
414
+ if (value.includes("###")) {
415
+ let count = options.counter++;
416
+ current += `${name}: ${name !== "ref" ? `typeof exprs[${count}] === "function" ? exprs[${count}]() : ` : ""}exprs[${count}],`;
417
+ delete node.attrs[name];
418
+ } else if (name === "###") {
419
+ if (current.length) {
420
+ spreadArgs.push(`()=>({${current}})`);
421
+ current = "";
422
+ }
423
+ spreadArgs.push(`exprs[${options.counter++}]`);
424
+ delete node.attrs[name];
425
+ }
426
+ }
427
+ if (current.length) spreadArgs.push(`()=>({${current}})`);
428
+ options.exprs.push(`r.spread(${tag},${spreadArgs.length === 1 ? `typeof ${spreadArgs[0]} === "function" ? r.mergeProps(${spreadArgs[0]}) : ${spreadArgs[0]}` : `r.mergeProps(${spreadArgs.join(",")})`},${isSVG},${!!node.children.length})`);
429
+ } else {
430
+ for (let i = 0; i < keys.length; i++) {
431
+ const name = keys[i],
432
+ value = node.attrs[name];
433
+ if (value.includes("###")) {
434
+ delete node.attrs[name];
435
+ parseAttribute(tag, name, value, isSVG, isCE, options);
436
+ }
417
437
  }
418
438
  }
419
439
  options.path = tag;
package/html/dist/html.js CHANGED
@@ -194,7 +194,7 @@ function createHTML(r, {
194
194
  templates[i].innerHTML = html[i];
195
195
  const nomarkers = templates[i].content.querySelectorAll("script,style");
196
196
  for (let j = 0; j < nomarkers.length; j++) {
197
- const d = nomarkers[j].firstChild.data || "";
197
+ const d = nomarkers[j].firstChild?.data || "";
198
198
  if (d.indexOf(marker) > -1) {
199
199
  const parts = d.split(marker).reduce((memo, p, i) => {
200
200
  i && memo.push("");
@@ -403,15 +403,35 @@ function createHTML(r, {
403
403
  const isSVG = r.SVGElements.has(node.name);
404
404
  const isCE = node.name.includes("-");
405
405
  options.hasCustomElement = isCE;
406
- for (let i = 0; i < keys.length; i++) {
407
- const name = keys[i],
408
- value = node.attrs[name];
409
- if (value.includes("###")) {
410
- delete node.attrs[name];
411
- parseAttribute(tag, name, value, isSVG, isCE, options);
412
- } else if (name === "###") {
413
- delete node.attrs[name];
414
- options.exprs.push(`r.spread(${tag},exprs[${options.counter++}],${isSVG},${!!node.children.length})`);
406
+ if (keys.includes("###")) {
407
+ const spreadArgs = [];
408
+ let current = "";
409
+ for (let i = 0; i < keys.length; i++) {
410
+ const name = keys[i],
411
+ value = node.attrs[name];
412
+ if (value.includes("###")) {
413
+ let count = options.counter++;
414
+ current += `${name}: ${name !== "ref" ? `typeof exprs[${count}] === "function" ? exprs[${count}]() : ` : ""}exprs[${count}],`;
415
+ delete node.attrs[name];
416
+ } else if (name === "###") {
417
+ if (current.length) {
418
+ spreadArgs.push(`()=>({${current}})`);
419
+ current = "";
420
+ }
421
+ spreadArgs.push(`exprs[${options.counter++}]`);
422
+ delete node.attrs[name];
423
+ }
424
+ }
425
+ if (current.length) spreadArgs.push(`()=>({${current}})`);
426
+ options.exprs.push(`r.spread(${tag},${spreadArgs.length === 1 ? `typeof ${spreadArgs[0]} === "function" ? r.mergeProps(${spreadArgs[0]}) : ${spreadArgs[0]}` : `r.mergeProps(${spreadArgs.join(",")})`},${isSVG},${!!node.children.length})`);
427
+ } else {
428
+ for (let i = 0; i < keys.length; i++) {
429
+ const name = keys[i],
430
+ value = node.attrs[name];
431
+ if (value.includes("###")) {
432
+ delete node.attrs[name];
433
+ parseAttribute(tag, name, value, isSVG, isCE, options);
434
+ }
415
435
  }
416
436
  }
417
437
  options.path = tag;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "solid-js",
3
3
  "description": "A declarative JavaScript library for building user interfaces.",
4
- "version": "1.5.6",
4
+ "version": "1.6.0-beta.0",
5
5
  "author": "Ryan Carniato",
6
6
  "license": "MIT",
7
7
  "homepage": "https://solidjs.com",
@@ -44,6 +44,13 @@
44
44
  ],
45
45
  "exports": {
46
46
  ".": {
47
+ "worker": {
48
+ "import": {
49
+ "types": "./types/index.d.ts",
50
+ "default": "./dist/server.js"
51
+ },
52
+ "require": "./dist/server.cjs"
53
+ },
47
54
  "browser": {
48
55
  "development": {
49
56
  "import": {
@@ -65,13 +72,6 @@
65
72
  },
66
73
  "require": "./dist/server.cjs"
67
74
  },
68
- "worker": {
69
- "import": {
70
- "types": "./types/index.d.ts",
71
- "default": "./dist/server.js"
72
- },
73
- "require": "./dist/server.cjs"
74
- },
75
75
  "node": {
76
76
  "import": {
77
77
  "types": "./types/index.d.ts",
@@ -98,6 +98,13 @@
98
98
  "default": "./dist/solid.js"
99
99
  },
100
100
  "./store": {
101
+ "worker": {
102
+ "import": {
103
+ "types": "./store/types/index.d.ts",
104
+ "default": "./store/dist/server.js"
105
+ },
106
+ "require": "./store/dist/server.cjs"
107
+ },
101
108
  "browser": {
102
109
  "development": {
103
110
  "import": {
@@ -119,13 +126,6 @@
119
126
  },
120
127
  "require": "./store/dist/server.cjs"
121
128
  },
122
- "worker": {
123
- "import": {
124
- "types": "./store/types/index.d.ts",
125
- "default": "./store/dist/server.js"
126
- },
127
- "require": "./store/dist/server.cjs"
128
- },
129
129
  "node": {
130
130
  "import": {
131
131
  "types": "./store/types/index.d.ts",
@@ -148,6 +148,13 @@
148
148
  },
149
149
  "./store/dist/*": "./store/dist/*",
150
150
  "./web": {
151
+ "worker": {
152
+ "import": {
153
+ "types": "./web/types/index.d.ts",
154
+ "default": "./web/dist/server.js"
155
+ },
156
+ "require": "./web/dist/server.cjs"
157
+ },
151
158
  "browser": {
152
159
  "development": {
153
160
  "import": {
@@ -169,13 +176,6 @@
169
176
  },
170
177
  "require": "./web/dist/server.cjs"
171
178
  },
172
- "worker": {
173
- "import": {
174
- "types": "./web/types/index.d.ts",
175
- "default": "./web/dist/server.js"
176
- },
177
- "require": "./web/dist/server.cjs"
178
- },
179
179
  "node": {
180
180
  "import": {
181
181
  "types": "./web/types/index.d.ts",
@@ -12,6 +12,13 @@
12
12
  "sideEffects": false,
13
13
  "exports": {
14
14
  ".": {
15
+ "worker": {
16
+ "import": {
17
+ "types": "./types/index.d.ts",
18
+ "default": "./dist/server.js"
19
+ },
20
+ "require": "./dist/server.cjs"
21
+ },
15
22
  "browser": {
16
23
  "development": {
17
24
  "import": {
@@ -33,13 +40,6 @@
33
40
  },
34
41
  "require": "./dist/server.cjs"
35
42
  },
36
- "worker": {
37
- "import": {
38
- "types": "./types/index.d.ts",
39
- "default": "./dist/server.js"
40
- },
41
- "require": "./dist/server.cjs"
42
- },
43
43
  "node": {
44
44
  "import": {
45
45
  "types": "./types/index.d.ts",
@@ -173,7 +173,7 @@ export declare function createEffect<Next, Init = Next>(fn: EffectFunction<Init
173
173
  * @description https://www.solidjs.com/docs/latest/api#createreaction
174
174
  */
175
175
  export declare function createReaction(onInvalidate: () => void, options?: EffectOptions): (tracking: () => void) => void;
176
- interface Memo<Prev, Next = Prev> extends SignalState<Next>, Computation<Next> {
176
+ export interface Memo<Prev, Next = Prev> extends SignalState<Next>, Computation<Next> {
177
177
  tOwned?: Computation<Prev | Next, Next>[];
178
178
  }
179
179
  export interface MemoOptions<T> extends EffectOptions {
@@ -4,12 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var solidJs = require('solid-js');
6
6
 
7
- function memo(fn, equals) {
8
- return solidJs.createMemo(fn, undefined, !equals ? {
9
- equals
10
- } : undefined);
11
- }
12
-
13
7
  function createRenderer$1({
14
8
  createElement,
15
9
  createTextNode,
@@ -195,10 +189,10 @@ function createRenderer$1({
195
189
  }
196
190
  function spreadExpression(node, props, prevProps = {}, skipChildren) {
197
191
  props || (props = {});
198
- if (!skipChildren && "children" in props) {
192
+ if (!skipChildren) {
199
193
  solidJs.createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));
200
194
  }
201
- props.ref && props.ref(node);
195
+ solidJs.createRenderEffect(() => props.ref && props.ref(node));
202
196
  solidJs.createRenderEffect(() => {
203
197
  for (const prop in props) {
204
198
  if (prop === "children" || prop === "ref") continue;
@@ -232,25 +226,15 @@ function createRenderer$1({
232
226
  setProperty(node, name, value, prev);
233
227
  return value;
234
228
  },
235
- mergeProps,
229
+ mergeProps: solidJs.mergeProps,
236
230
  effect: solidJs.createRenderEffect,
237
- memo,
231
+ memo: solidJs.createMemo,
238
232
  createComponent: solidJs.createComponent,
239
233
  use(fn, element, arg) {
240
234
  return solidJs.untrack(() => fn(element, arg));
241
235
  }
242
236
  };
243
237
  }
244
- function mergeProps(...sources) {
245
- const target = {};
246
- for (let i = 0; i < sources.length; i++) {
247
- let source = sources[i];
248
- if (typeof source === "function") source = source();
249
- const descriptors = Object.getOwnPropertyDescriptors(source);
250
- Object.defineProperties(target, descriptors);
251
- }
252
- return target;
253
- }
254
238
 
255
239
  function createRenderer(options) {
256
240
  const renderer = createRenderer$1(options);
@@ -1,10 +1,4 @@
1
- import { createMemo, createRoot, createRenderEffect, createComponent, untrack, mergeProps as mergeProps$1 } from 'solid-js';
2
-
3
- function memo(fn, equals) {
4
- return createMemo(fn, undefined, !equals ? {
5
- equals
6
- } : undefined);
7
- }
1
+ import { createRoot, createRenderEffect, mergeProps, createMemo, createComponent, untrack } from 'solid-js';
8
2
 
9
3
  function createRenderer$1({
10
4
  createElement,
@@ -191,10 +185,10 @@ function createRenderer$1({
191
185
  }
192
186
  function spreadExpression(node, props, prevProps = {}, skipChildren) {
193
187
  props || (props = {});
194
- if (!skipChildren && "children" in props) {
188
+ if (!skipChildren) {
195
189
  createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));
196
190
  }
197
- props.ref && props.ref(node);
191
+ createRenderEffect(() => props.ref && props.ref(node));
198
192
  createRenderEffect(() => {
199
193
  for (const prop in props) {
200
194
  if (prop === "children" || prop === "ref") continue;
@@ -230,27 +224,17 @@ function createRenderer$1({
230
224
  },
231
225
  mergeProps,
232
226
  effect: createRenderEffect,
233
- memo,
227
+ memo: createMemo,
234
228
  createComponent,
235
229
  use(fn, element, arg) {
236
230
  return untrack(() => fn(element, arg));
237
231
  }
238
232
  };
239
233
  }
240
- function mergeProps(...sources) {
241
- const target = {};
242
- for (let i = 0; i < sources.length; i++) {
243
- let source = sources[i];
244
- if (typeof source === "function") source = source();
245
- const descriptors = Object.getOwnPropertyDescriptors(source);
246
- Object.defineProperties(target, descriptors);
247
- }
248
- return target;
249
- }
250
234
 
251
235
  function createRenderer(options) {
252
236
  const renderer = createRenderer$1(options);
253
- renderer.mergeProps = mergeProps$1;
237
+ renderer.mergeProps = mergeProps;
254
238
  return renderer;
255
239
  }
256
240
 
@@ -4,12 +4,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var solidJs = require('solid-js');
6
6
 
7
- function memo(fn, equals) {
8
- return solidJs.createMemo(fn, undefined, !equals ? {
9
- equals
10
- } : undefined);
11
- }
12
-
13
7
  function createRenderer$1({
14
8
  createElement,
15
9
  createTextNode,
@@ -195,10 +189,10 @@ function createRenderer$1({
195
189
  }
196
190
  function spreadExpression(node, props, prevProps = {}, skipChildren) {
197
191
  props || (props = {});
198
- if (!skipChildren && "children" in props) {
192
+ if (!skipChildren) {
199
193
  solidJs.createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));
200
194
  }
201
- props.ref && props.ref(node);
195
+ solidJs.createRenderEffect(() => props.ref && props.ref(node));
202
196
  solidJs.createRenderEffect(() => {
203
197
  for (const prop in props) {
204
198
  if (prop === "children" || prop === "ref") continue;
@@ -232,25 +226,15 @@ function createRenderer$1({
232
226
  setProperty(node, name, value, prev);
233
227
  return value;
234
228
  },
235
- mergeProps,
229
+ mergeProps: solidJs.mergeProps,
236
230
  effect: solidJs.createRenderEffect,
237
- memo,
231
+ memo: solidJs.createMemo,
238
232
  createComponent: solidJs.createComponent,
239
233
  use(fn, element, arg) {
240
234
  return solidJs.untrack(() => fn(element, arg));
241
235
  }
242
236
  };
243
237
  }
244
- function mergeProps(...sources) {
245
- const target = {};
246
- for (let i = 0; i < sources.length; i++) {
247
- let source = sources[i];
248
- if (typeof source === "function") source = source();
249
- const descriptors = Object.getOwnPropertyDescriptors(source);
250
- Object.defineProperties(target, descriptors);
251
- }
252
- return target;
253
- }
254
238
 
255
239
  function createRenderer(options) {
256
240
  const renderer = createRenderer$1(options);
@@ -1,10 +1,4 @@
1
- import { createMemo, createRoot, createRenderEffect, createComponent, untrack, mergeProps as mergeProps$1 } from 'solid-js';
2
-
3
- function memo(fn, equals) {
4
- return createMemo(fn, undefined, !equals ? {
5
- equals
6
- } : undefined);
7
- }
1
+ import { createRoot, createRenderEffect, mergeProps, createMemo, createComponent, untrack } from 'solid-js';
8
2
 
9
3
  function createRenderer$1({
10
4
  createElement,
@@ -191,10 +185,10 @@ function createRenderer$1({
191
185
  }
192
186
  function spreadExpression(node, props, prevProps = {}, skipChildren) {
193
187
  props || (props = {});
194
- if (!skipChildren && "children" in props) {
188
+ if (!skipChildren) {
195
189
  createRenderEffect(() => prevProps.children = insertExpression(node, props.children, prevProps.children));
196
190
  }
197
- props.ref && props.ref(node);
191
+ createRenderEffect(() => props.ref && props.ref(node));
198
192
  createRenderEffect(() => {
199
193
  for (const prop in props) {
200
194
  if (prop === "children" || prop === "ref") continue;
@@ -230,27 +224,17 @@ function createRenderer$1({
230
224
  },
231
225
  mergeProps,
232
226
  effect: createRenderEffect,
233
- memo,
227
+ memo: createMemo,
234
228
  createComponent,
235
229
  use(fn, element, arg) {
236
230
  return untrack(() => fn(element, arg));
237
231
  }
238
232
  };
239
233
  }
240
- function mergeProps(...sources) {
241
- const target = {};
242
- for (let i = 0; i < sources.length; i++) {
243
- let source = sources[i];
244
- if (typeof source === "function") source = source();
245
- const descriptors = Object.getOwnPropertyDescriptors(source);
246
- Object.defineProperties(target, descriptors);
247
- }
248
- return target;
249
- }
250
234
 
251
235
  function createRenderer(options) {
252
236
  const renderer = createRenderer$1(options);
253
- renderer.mergeProps = mergeProps$1;
237
+ renderer.mergeProps = mergeProps;
254
238
  return renderer;
255
239
  }
256
240