solid-js 1.5.7 → 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/dev.cjs CHANGED
@@ -682,7 +682,9 @@ function updateComputation(node) {
682
682
  queueMicrotask(() => {
683
683
  runUpdates(() => {
684
684
  Transition && (Transition.running = true);
685
+ Listener = Owner = node;
685
686
  runComputation(node, node.tValue, time);
687
+ Listener = Owner = null;
686
688
  }, false);
687
689
  });
688
690
  }
@@ -1257,29 +1259,41 @@ function resolveSource(s) {
1257
1259
  return (s = typeof s === "function" ? s() : s) == null ? {} : s;
1258
1260
  }
1259
1261
  function mergeProps(...sources) {
1260
- return new Proxy({
1261
- get(property) {
1262
- for (let i = sources.length - 1; i >= 0; i--) {
1263
- const v = resolveSource(sources[i])[property];
1264
- if (v !== undefined) return v;
1265
- }
1266
- },
1267
- has(property) {
1268
- for (let i = sources.length - 1; i >= 0; i--) {
1269
- if (property in resolveSource(sources[i])) return true;
1262
+ if (sources.some(s => s && ($PROXY in s || typeof s === "function"))) {
1263
+ return new Proxy({
1264
+ get(property) {
1265
+ for (let i = sources.length - 1; i >= 0; i--) {
1266
+ const v = resolveSource(sources[i])[property];
1267
+ if (v !== undefined) return v;
1268
+ }
1269
+ },
1270
+ has(property) {
1271
+ for (let i = sources.length - 1; i >= 0; i--) {
1272
+ if (property in resolveSource(sources[i])) return true;
1273
+ }
1274
+ return false;
1275
+ },
1276
+ keys() {
1277
+ const keys = [];
1278
+ for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1279
+ return [...new Set(keys)];
1270
1280
  }
1271
- return false;
1272
- },
1273
- keys() {
1274
- const keys = [];
1275
- for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1276
- return [...new Set(keys)];
1281
+ }, propTraps);
1282
+ }
1283
+ const target = {};
1284
+ for (let i = 0; i < sources.length; i++) {
1285
+ if (sources[i]) {
1286
+ const descriptors = Object.getOwnPropertyDescriptors(sources[i]);
1287
+ Object.defineProperties(target, descriptors);
1277
1288
  }
1278
- }, propTraps);
1289
+ }
1290
+ return target;
1279
1291
  }
1280
1292
  function splitProps(props, ...keys) {
1281
1293
  const blocked = new Set(keys.flat());
1282
1294
  const descriptors = Object.getOwnPropertyDescriptors(props);
1295
+ const isProxy = ($PROXY in props);
1296
+ if (!isProxy) keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));
1283
1297
  const res = keys.map(k => {
1284
1298
  const clone = {};
1285
1299
  for (let i = 0; i < k.length; i++) {
@@ -1295,17 +1309,19 @@ function splitProps(props, ...keys) {
1295
1309
  }
1296
1310
  return clone;
1297
1311
  });
1298
- res.push(new Proxy({
1299
- get(property) {
1300
- return blocked.has(property) ? undefined : props[property];
1301
- },
1302
- has(property) {
1303
- return blocked.has(property) ? false : property in props;
1304
- },
1305
- keys() {
1306
- return Object.keys(props).filter(k => !blocked.has(k));
1307
- }
1308
- }, propTraps));
1312
+ if (isProxy) {
1313
+ res.push(new Proxy({
1314
+ get(property) {
1315
+ return blocked.has(property) ? undefined : props[property];
1316
+ },
1317
+ has(property) {
1318
+ return blocked.has(property) ? false : property in props;
1319
+ },
1320
+ keys() {
1321
+ return Object.keys(props).filter(k => !blocked.has(k));
1322
+ }
1323
+ }, propTraps));
1324
+ }
1309
1325
  return res;
1310
1326
  }
1311
1327
  function lazy(fn) {
package/dist/dev.js CHANGED
@@ -678,7 +678,9 @@ function updateComputation(node) {
678
678
  queueMicrotask(() => {
679
679
  runUpdates(() => {
680
680
  Transition && (Transition.running = true);
681
+ Listener = Owner = node;
681
682
  runComputation(node, node.tValue, time);
683
+ Listener = Owner = null;
682
684
  }, false);
683
685
  });
684
686
  }
@@ -1253,29 +1255,41 @@ function resolveSource(s) {
1253
1255
  return (s = typeof s === "function" ? s() : s) == null ? {} : s;
1254
1256
  }
1255
1257
  function mergeProps(...sources) {
1256
- return new Proxy({
1257
- get(property) {
1258
- for (let i = sources.length - 1; i >= 0; i--) {
1259
- const v = resolveSource(sources[i])[property];
1260
- if (v !== undefined) return v;
1261
- }
1262
- },
1263
- has(property) {
1264
- for (let i = sources.length - 1; i >= 0; i--) {
1265
- if (property in resolveSource(sources[i])) return true;
1258
+ if (sources.some(s => s && ($PROXY in s || typeof s === "function"))) {
1259
+ return new Proxy({
1260
+ get(property) {
1261
+ for (let i = sources.length - 1; i >= 0; i--) {
1262
+ const v = resolveSource(sources[i])[property];
1263
+ if (v !== undefined) return v;
1264
+ }
1265
+ },
1266
+ has(property) {
1267
+ for (let i = sources.length - 1; i >= 0; i--) {
1268
+ if (property in resolveSource(sources[i])) return true;
1269
+ }
1270
+ return false;
1271
+ },
1272
+ keys() {
1273
+ const keys = [];
1274
+ for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1275
+ return [...new Set(keys)];
1266
1276
  }
1267
- return false;
1268
- },
1269
- keys() {
1270
- const keys = [];
1271
- for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1272
- return [...new Set(keys)];
1277
+ }, propTraps);
1278
+ }
1279
+ const target = {};
1280
+ for (let i = 0; i < sources.length; i++) {
1281
+ if (sources[i]) {
1282
+ const descriptors = Object.getOwnPropertyDescriptors(sources[i]);
1283
+ Object.defineProperties(target, descriptors);
1273
1284
  }
1274
- }, propTraps);
1285
+ }
1286
+ return target;
1275
1287
  }
1276
1288
  function splitProps(props, ...keys) {
1277
1289
  const blocked = new Set(keys.flat());
1278
1290
  const descriptors = Object.getOwnPropertyDescriptors(props);
1291
+ const isProxy = ($PROXY in props);
1292
+ if (!isProxy) keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));
1279
1293
  const res = keys.map(k => {
1280
1294
  const clone = {};
1281
1295
  for (let i = 0; i < k.length; i++) {
@@ -1291,17 +1305,19 @@ function splitProps(props, ...keys) {
1291
1305
  }
1292
1306
  return clone;
1293
1307
  });
1294
- res.push(new Proxy({
1295
- get(property) {
1296
- return blocked.has(property) ? undefined : props[property];
1297
- },
1298
- has(property) {
1299
- return blocked.has(property) ? false : property in props;
1300
- },
1301
- keys() {
1302
- return Object.keys(props).filter(k => !blocked.has(k));
1303
- }
1304
- }, propTraps));
1308
+ if (isProxy) {
1309
+ res.push(new Proxy({
1310
+ get(property) {
1311
+ return blocked.has(property) ? undefined : props[property];
1312
+ },
1313
+ has(property) {
1314
+ return blocked.has(property) ? false : property in props;
1315
+ },
1316
+ keys() {
1317
+ return Object.keys(props).filter(k => !blocked.has(k));
1318
+ }
1319
+ }, propTraps));
1320
+ }
1305
1321
  return res;
1306
1322
  }
1307
1323
  function lazy(fn) {
package/dist/solid.cjs CHANGED
@@ -621,7 +621,9 @@ function updateComputation(node) {
621
621
  queueMicrotask(() => {
622
622
  runUpdates(() => {
623
623
  Transition && (Transition.running = true);
624
+ Listener = Owner = node;
624
625
  runComputation(node, node.tValue, time);
626
+ Listener = Owner = null;
625
627
  }, false);
626
628
  });
627
629
  }
@@ -1171,29 +1173,41 @@ function resolveSource(s) {
1171
1173
  return (s = typeof s === "function" ? s() : s) == null ? {} : s;
1172
1174
  }
1173
1175
  function mergeProps(...sources) {
1174
- return new Proxy({
1175
- get(property) {
1176
- for (let i = sources.length - 1; i >= 0; i--) {
1177
- const v = resolveSource(sources[i])[property];
1178
- if (v !== undefined) return v;
1179
- }
1180
- },
1181
- has(property) {
1182
- for (let i = sources.length - 1; i >= 0; i--) {
1183
- if (property in resolveSource(sources[i])) return true;
1176
+ if (sources.some(s => s && ($PROXY in s || typeof s === "function"))) {
1177
+ return new Proxy({
1178
+ get(property) {
1179
+ for (let i = sources.length - 1; i >= 0; i--) {
1180
+ const v = resolveSource(sources[i])[property];
1181
+ if (v !== undefined) return v;
1182
+ }
1183
+ },
1184
+ has(property) {
1185
+ for (let i = sources.length - 1; i >= 0; i--) {
1186
+ if (property in resolveSource(sources[i])) return true;
1187
+ }
1188
+ return false;
1189
+ },
1190
+ keys() {
1191
+ const keys = [];
1192
+ for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1193
+ return [...new Set(keys)];
1184
1194
  }
1185
- return false;
1186
- },
1187
- keys() {
1188
- const keys = [];
1189
- for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1190
- return [...new Set(keys)];
1195
+ }, propTraps);
1196
+ }
1197
+ const target = {};
1198
+ for (let i = 0; i < sources.length; i++) {
1199
+ if (sources[i]) {
1200
+ const descriptors = Object.getOwnPropertyDescriptors(sources[i]);
1201
+ Object.defineProperties(target, descriptors);
1191
1202
  }
1192
- }, propTraps);
1203
+ }
1204
+ return target;
1193
1205
  }
1194
1206
  function splitProps(props, ...keys) {
1195
1207
  const blocked = new Set(keys.flat());
1196
1208
  const descriptors = Object.getOwnPropertyDescriptors(props);
1209
+ const isProxy = ($PROXY in props);
1210
+ if (!isProxy) keys.push(Object.keys(descriptors).filter(k => !blocked.has(k)));
1197
1211
  const res = keys.map(k => {
1198
1212
  const clone = {};
1199
1213
  for (let i = 0; i < k.length; i++) {
@@ -1209,17 +1223,19 @@ function splitProps(props, ...keys) {
1209
1223
  }
1210
1224
  return clone;
1211
1225
  });
1212
- res.push(new Proxy({
1213
- get(property) {
1214
- return blocked.has(property) ? undefined : props[property];
1215
- },
1216
- has(property) {
1217
- return blocked.has(property) ? false : property in props;
1218
- },
1219
- keys() {
1220
- return Object.keys(props).filter(k => !blocked.has(k));
1221
- }
1222
- }, propTraps));
1226
+ if (isProxy) {
1227
+ res.push(new Proxy({
1228
+ get(property) {
1229
+ return blocked.has(property) ? undefined : props[property];
1230
+ },
1231
+ has(property) {
1232
+ return blocked.has(property) ? false : property in props;
1233
+ },
1234
+ keys() {
1235
+ return Object.keys(props).filter(k => !blocked.has(k));
1236
+ }
1237
+ }, propTraps));
1238
+ }
1223
1239
  return res;
1224
1240
  }
1225
1241
  function lazy(fn) {
package/dist/solid.js CHANGED
@@ -617,7 +617,9 @@ function updateComputation(node) {
617
617
  queueMicrotask(() => {
618
618
  runUpdates(() => {
619
619
  Transition && (Transition.running = true);
620
+ Listener = Owner = node;
620
621
  runComputation(node, node.tValue, time);
622
+ Listener = Owner = null;
621
623
  }, false);
622
624
  });
623
625
  }
@@ -1167,29 +1169,41 @@ function resolveSource(s) {
1167
1169
  return (s = typeof s === "function" ? s() : s) == null ? {} : s;
1168
1170
  }
1169
1171
  function mergeProps(...sources) {
1170
- return new Proxy({
1171
- get(property) {
1172
- for (let i = sources.length - 1; i >= 0; i--) {
1173
- const v = resolveSource(sources[i])[property];
1174
- if (v !== undefined) return v;
1175
- }
1176
- },
1177
- has(property) {
1178
- for (let i = sources.length - 1; i >= 0; i--) {
1179
- 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)];
1180
1190
  }
1181
- return false;
1182
- },
1183
- keys() {
1184
- const keys = [];
1185
- for (let i = 0; i < sources.length; i++) keys.push(...Object.keys(resolveSource(sources[i])));
1186
- 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);
1187
1198
  }
1188
- }, propTraps);
1199
+ }
1200
+ return target;
1189
1201
  }
1190
1202
  function splitProps(props, ...keys) {
1191
1203
  const blocked = new Set(keys.flat());
1192
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)));
1193
1207
  const res = keys.map(k => {
1194
1208
  const clone = {};
1195
1209
  for (let i = 0; i < k.length; i++) {
@@ -1205,17 +1219,19 @@ function splitProps(props, ...keys) {
1205
1219
  }
1206
1220
  return clone;
1207
1221
  });
1208
- res.push(new Proxy({
1209
- get(property) {
1210
- return blocked.has(property) ? undefined : props[property];
1211
- },
1212
- has(property) {
1213
- return blocked.has(property) ? false : property in props;
1214
- },
1215
- keys() {
1216
- return Object.keys(props).filter(k => !blocked.has(k));
1217
- }
1218
- }, 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
+ }
1219
1235
  return res;
1220
1236
  }
1221
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.7",
4
+ "version": "1.6.0-beta.0",
5
5
  "author": "Ryan Carniato",
6
6
  "license": "MIT",
7
7
  "homepage": "https://solidjs.com",
@@ -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