solid-js 1.2.1 → 1.2.5

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
@@ -195,10 +195,12 @@ function createSignal(value, options) {
195
195
  }];
196
196
  }
197
197
  function createComputed(fn, value, options) {
198
- updateComputation(createComputation(fn, value, true, STALE, options ));
198
+ const c = createComputation(fn, value, true, STALE, options );
199
+ if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);
199
200
  }
200
201
  function createRenderEffect(fn, value, options) {
201
- updateComputation(createComputation(fn, value, false, STALE, options ));
202
+ const c = createComputation(fn, value, false, STALE, options );
203
+ if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);
202
204
  }
203
205
  function createEffect(fn, value, options) {
204
206
  runEffects = runUserEffects;
@@ -215,7 +217,10 @@ function createMemo(fn, value, options) {
215
217
  c.observers = null;
216
218
  c.observerSlots = null;
217
219
  c.comparator = options.equals || undefined;
218
- updateComputation(c);
220
+ if (Scheduler && Transition && Transition.running) {
221
+ c.tState = STALE;
222
+ Updates.push(c);
223
+ } else updateComputation(c);
219
224
  return readSignal.bind(c);
220
225
  }
221
226
  function createResource(source, fetcher, options) {
@@ -1207,6 +1212,9 @@ function splitProps(props, ...keys) {
1207
1212
  Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {
1208
1213
  get() {
1209
1214
  return props[key];
1215
+ },
1216
+ set() {
1217
+ return true;
1210
1218
  }
1211
1219
  });
1212
1220
  }
@@ -1409,9 +1417,12 @@ function Suspense(props) {
1409
1417
  inFallback,
1410
1418
  effects: [],
1411
1419
  resolved: false
1412
- };
1420
+ },
1421
+ owner = getOwner();
1413
1422
  const listContext = useContext(SuspenseListContext);
1414
1423
  if (listContext) [showContent, showFallback] = listContext.register(store.inFallback);
1424
+ let dispose;
1425
+ onCleanup(() => dispose && dispose());
1415
1426
  return createComponent(SuspenseContext.Provider, {
1416
1427
  value: store,
1417
1428
  get children() {
@@ -1420,13 +1431,17 @@ function Suspense(props) {
1420
1431
  const inFallback = store.inFallback(),
1421
1432
  visibleContent = showContent ? showContent() : true,
1422
1433
  visibleFallback = showFallback ? showFallback() : true;
1434
+ dispose && dispose();
1423
1435
  if (!inFallback && visibleContent) {
1424
1436
  store.resolved = true;
1425
1437
  resumeEffects(store.effects);
1426
1438
  return rendered;
1427
1439
  }
1428
1440
  if (!visibleFallback) return;
1429
- return props.fallback;
1441
+ return createRoot(disposer => {
1442
+ dispose = disposer;
1443
+ return props.fallback;
1444
+ }, owner);
1430
1445
  });
1431
1446
  }
1432
1447
  });
package/dist/dev.js CHANGED
@@ -191,10 +191,12 @@ function createSignal(value, options) {
191
191
  }];
192
192
  }
193
193
  function createComputed(fn, value, options) {
194
- updateComputation(createComputation(fn, value, true, STALE, options ));
194
+ const c = createComputation(fn, value, true, STALE, options );
195
+ if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);
195
196
  }
196
197
  function createRenderEffect(fn, value, options) {
197
- updateComputation(createComputation(fn, value, false, STALE, options ));
198
+ const c = createComputation(fn, value, false, STALE, options );
199
+ if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);
198
200
  }
199
201
  function createEffect(fn, value, options) {
200
202
  runEffects = runUserEffects;
@@ -211,7 +213,10 @@ function createMemo(fn, value, options) {
211
213
  c.observers = null;
212
214
  c.observerSlots = null;
213
215
  c.comparator = options.equals || undefined;
214
- updateComputation(c);
216
+ if (Scheduler && Transition && Transition.running) {
217
+ c.tState = STALE;
218
+ Updates.push(c);
219
+ } else updateComputation(c);
215
220
  return readSignal.bind(c);
216
221
  }
217
222
  function createResource(source, fetcher, options) {
@@ -1203,6 +1208,9 @@ function splitProps(props, ...keys) {
1203
1208
  Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {
1204
1209
  get() {
1205
1210
  return props[key];
1211
+ },
1212
+ set() {
1213
+ return true;
1206
1214
  }
1207
1215
  });
1208
1216
  }
@@ -1405,9 +1413,12 @@ function Suspense(props) {
1405
1413
  inFallback,
1406
1414
  effects: [],
1407
1415
  resolved: false
1408
- };
1416
+ },
1417
+ owner = getOwner();
1409
1418
  const listContext = useContext(SuspenseListContext);
1410
1419
  if (listContext) [showContent, showFallback] = listContext.register(store.inFallback);
1420
+ let dispose;
1421
+ onCleanup(() => dispose && dispose());
1411
1422
  return createComponent(SuspenseContext.Provider, {
1412
1423
  value: store,
1413
1424
  get children() {
@@ -1416,13 +1427,17 @@ function Suspense(props) {
1416
1427
  const inFallback = store.inFallback(),
1417
1428
  visibleContent = showContent ? showContent() : true,
1418
1429
  visibleFallback = showFallback ? showFallback() : true;
1430
+ dispose && dispose();
1419
1431
  if (!inFallback && visibleContent) {
1420
1432
  store.resolved = true;
1421
1433
  resumeEffects(store.effects);
1422
1434
  return rendered;
1423
1435
  }
1424
1436
  if (!visibleFallback) return;
1425
- return props.fallback;
1437
+ return createRoot(disposer => {
1438
+ dispose = disposer;
1439
+ return props.fallback;
1440
+ }, owner);
1426
1441
  });
1427
1442
  }
1428
1443
  });
package/dist/server.cjs CHANGED
@@ -510,6 +510,7 @@ exports.SuspenseList = SuspenseList;
510
510
  exports.Switch = Switch;
511
511
  exports.awaitSuspense = awaitSuspense;
512
512
  exports.batch = batch;
513
+ exports.children = children;
513
514
  exports.createComponent = createComponent;
514
515
  exports.createComputed = createComputed;
515
516
  exports.createContext = createContext;
package/dist/server.js CHANGED
@@ -494,4 +494,4 @@ function awaitSuspense(fn) {
494
494
  });
495
495
  }
496
496
 
497
- export { $PROXY, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, awaitSuspense, batch, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableScheduling, equalFn, from, getListener, getOwner, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };
497
+ export { $PROXY, DEV, ErrorBoundary, For, Index, Match, Show, Suspense, SuspenseList, Switch, awaitSuspense, batch, children, createComponent, createComputed, createContext, createDeferred, createEffect, createMemo, createRenderEffect, createResource, createRoot, createSelector, createSignal, createUniqueId, enableScheduling, equalFn, from, getListener, getOwner, lazy, mapArray, mergeProps, observable, on, onCleanup, onError, onMount, requestCallback, runWithOwner, sharedConfig, splitProps, startTransition, untrack, useContext, useTransition };
package/dist/solid.cjs CHANGED
@@ -192,10 +192,12 @@ function createSignal(value, options) {
192
192
  }];
193
193
  }
194
194
  function createComputed(fn, value, options) {
195
- updateComputation(createComputation(fn, value, true, STALE));
195
+ const c = createComputation(fn, value, true, STALE);
196
+ if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);
196
197
  }
197
198
  function createRenderEffect(fn, value, options) {
198
- updateComputation(createComputation(fn, value, false, STALE));
199
+ const c = createComputation(fn, value, false, STALE);
200
+ if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);
199
201
  }
200
202
  function createEffect(fn, value, options) {
201
203
  runEffects = runUserEffects;
@@ -212,7 +214,10 @@ function createMemo(fn, value, options) {
212
214
  c.observers = null;
213
215
  c.observerSlots = null;
214
216
  c.comparator = options.equals || undefined;
215
- updateComputation(c);
217
+ if (Scheduler && Transition && Transition.running) {
218
+ c.tState = STALE;
219
+ Updates.push(c);
220
+ } else updateComputation(c);
216
221
  return readSignal.bind(c);
217
222
  }
218
223
  function createResource(source, fetcher, options) {
@@ -1131,6 +1136,9 @@ function splitProps(props, ...keys) {
1131
1136
  Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {
1132
1137
  get() {
1133
1138
  return props[key];
1139
+ },
1140
+ set() {
1141
+ return true;
1134
1142
  }
1135
1143
  });
1136
1144
  }
@@ -1333,9 +1341,12 @@ function Suspense(props) {
1333
1341
  inFallback,
1334
1342
  effects: [],
1335
1343
  resolved: false
1336
- };
1344
+ },
1345
+ owner = getOwner();
1337
1346
  const listContext = useContext(SuspenseListContext);
1338
1347
  if (listContext) [showContent, showFallback] = listContext.register(store.inFallback);
1348
+ let dispose;
1349
+ onCleanup(() => dispose && dispose());
1339
1350
  return createComponent(SuspenseContext.Provider, {
1340
1351
  value: store,
1341
1352
  get children() {
@@ -1344,13 +1355,17 @@ function Suspense(props) {
1344
1355
  const inFallback = store.inFallback(),
1345
1356
  visibleContent = showContent ? showContent() : true,
1346
1357
  visibleFallback = showFallback ? showFallback() : true;
1358
+ dispose && dispose();
1347
1359
  if (!inFallback && visibleContent) {
1348
1360
  store.resolved = true;
1349
1361
  resumeEffects(store.effects);
1350
1362
  return rendered;
1351
1363
  }
1352
1364
  if (!visibleFallback) return;
1353
- return props.fallback;
1365
+ return createRoot(disposer => {
1366
+ dispose = disposer;
1367
+ return props.fallback;
1368
+ }, owner);
1354
1369
  });
1355
1370
  }
1356
1371
  });
package/dist/solid.js CHANGED
@@ -188,10 +188,12 @@ function createSignal(value, options) {
188
188
  }];
189
189
  }
190
190
  function createComputed(fn, value, options) {
191
- updateComputation(createComputation(fn, value, true, STALE));
191
+ const c = createComputation(fn, value, true, STALE);
192
+ if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);
192
193
  }
193
194
  function createRenderEffect(fn, value, options) {
194
- updateComputation(createComputation(fn, value, false, STALE));
195
+ const c = createComputation(fn, value, false, STALE);
196
+ if (Scheduler && Transition && Transition.running) Updates.push(c);else updateComputation(c);
195
197
  }
196
198
  function createEffect(fn, value, options) {
197
199
  runEffects = runUserEffects;
@@ -208,7 +210,10 @@ function createMemo(fn, value, options) {
208
210
  c.observers = null;
209
211
  c.observerSlots = null;
210
212
  c.comparator = options.equals || undefined;
211
- updateComputation(c);
213
+ if (Scheduler && Transition && Transition.running) {
214
+ c.tState = STALE;
215
+ Updates.push(c);
216
+ } else updateComputation(c);
212
217
  return readSignal.bind(c);
213
218
  }
214
219
  function createResource(source, fetcher, options) {
@@ -1127,6 +1132,9 @@ function splitProps(props, ...keys) {
1127
1132
  Object.defineProperty(clone, key, descriptors[key] ? descriptors[key] : {
1128
1133
  get() {
1129
1134
  return props[key];
1135
+ },
1136
+ set() {
1137
+ return true;
1130
1138
  }
1131
1139
  });
1132
1140
  }
@@ -1329,9 +1337,12 @@ function Suspense(props) {
1329
1337
  inFallback,
1330
1338
  effects: [],
1331
1339
  resolved: false
1332
- };
1340
+ },
1341
+ owner = getOwner();
1333
1342
  const listContext = useContext(SuspenseListContext);
1334
1343
  if (listContext) [showContent, showFallback] = listContext.register(store.inFallback);
1344
+ let dispose;
1345
+ onCleanup(() => dispose && dispose());
1335
1346
  return createComponent(SuspenseContext.Provider, {
1336
1347
  value: store,
1337
1348
  get children() {
@@ -1340,13 +1351,17 @@ function Suspense(props) {
1340
1351
  const inFallback = store.inFallback(),
1341
1352
  visibleContent = showContent ? showContent() : true,
1342
1353
  visibleFallback = showFallback ? showFallback() : true;
1354
+ dispose && dispose();
1343
1355
  if (!inFallback && visibleContent) {
1344
1356
  store.resolved = true;
1345
1357
  resumeEffects(store.effects);
1346
1358
  return rendered;
1347
1359
  }
1348
1360
  if (!visibleFallback) return;
1349
- return props.fallback;
1361
+ return createRoot(disposer => {
1362
+ dispose = disposer;
1363
+ return props.fallback;
1364
+ }, owner);
1350
1365
  });
1351
1366
  }
1352
1367
  });
@@ -358,7 +358,8 @@ function createHTML(r, {
358
358
  childOptions = Object.assign({}, options, {
359
359
  first: true,
360
360
  decl: [],
361
- exprs: []
361
+ exprs: [],
362
+ parent: false
362
363
  });
363
364
  parseNode(children, childOptions);
364
365
  props.push(`children: () => { ${childOptions.exprs.join(";\n")}}`);
@@ -399,8 +400,8 @@ function createHTML(r, {
399
400
  decl: [],
400
401
  exprs: []
401
402
  });
402
- parseNode(child, childOptions);
403
403
  options.templateNodes.push([child]);
404
+ parseNode(child, childOptions);
404
405
  parts.push(`function() { ${childOptions.decl.join(",\n") + ";\n" + childOptions.exprs.join(";\n") + `;\nreturn _$el${id};\n`}}()`);
405
406
  options.counter = childOptions.counter;
406
407
  options.templateId = childOptions.templateId;
package/html/dist/html.js CHANGED
@@ -356,7 +356,8 @@ function createHTML(r, {
356
356
  childOptions = Object.assign({}, options, {
357
357
  first: true,
358
358
  decl: [],
359
- exprs: []
359
+ exprs: [],
360
+ parent: false
360
361
  });
361
362
  parseNode(children, childOptions);
362
363
  props.push(`children: () => { ${childOptions.exprs.join(";\n")}}`);
@@ -397,8 +398,8 @@ function createHTML(r, {
397
398
  decl: [],
398
399
  exprs: []
399
400
  });
400
- parseNode(child, childOptions);
401
401
  options.templateNodes.push([child]);
402
+ parseNode(child, childOptions);
402
403
  parts.push(`function() { ${childOptions.decl.join(",\n") + ";\n" + childOptions.exprs.join(";\n") + `;\nreturn _$el${id};\n`}}()`);
403
404
  options.counter = childOptions.counter;
404
405
  options.templateId = childOptions.templateId;
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.2.1",
4
+ "version": "1.2.5",
5
5
  "author": "Ryan Carniato",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/solidjs/solid#readme",
@@ -132,5 +132,5 @@
132
132
  "compiler",
133
133
  "performance"
134
134
  ],
135
- "gitHead": "8bca8fa83837ac7406bc76813fedbc72bbe11a01"
135
+ "gitHead": "faf884b19acc078f1e202030bbd6b22c49a5ae6b"
136
136
  }
@@ -31,7 +31,7 @@ function wrap$1(value, name) {
31
31
  return p;
32
32
  }
33
33
  function isWrappable(obj) {
34
- return obj != null && typeof obj === "object" && (!obj.__proto__ || obj.__proto__ === Object.prototype || Array.isArray(obj));
34
+ return obj != null && typeof obj === "object" && (obj[solidJs.$PROXY] || !obj.__proto__ || obj.__proto__ === Object.prototype || Array.isArray(obj));
35
35
  }
36
36
  function unwrap(item, set = new Set()) {
37
37
  let result, unwrapped, v, prop;
@@ -65,7 +65,7 @@ function getDataNodes(target) {
65
65
  }
66
66
  function proxyDescriptor(target, property) {
67
67
  const desc = Reflect.getOwnPropertyDescriptor(target, property);
68
- if (!desc || desc.get || property === solidJs.$PROXY || property === $NODE || property === $NAME) return desc;
68
+ if (!desc || desc.get || !desc.configurable || property === solidJs.$PROXY || property === $NODE || property === $NAME) return desc;
69
69
  delete desc.value;
70
70
  delete desc.writable;
71
71
  desc.get = () => target[solidJs.$PROXY][property];
package/store/dist/dev.js CHANGED
@@ -1,4 +1,4 @@
1
- import { DEV, $PROXY, getListener, batch, createSignal } from 'solid-js';
1
+ import { $PROXY, DEV, getListener, batch, createSignal } from 'solid-js';
2
2
 
3
3
  const $RAW = Symbol("store-raw"),
4
4
  $NODE = Symbol("store-node"),
@@ -27,7 +27,7 @@ function wrap$1(value, name) {
27
27
  return p;
28
28
  }
29
29
  function isWrappable(obj) {
30
- return obj != null && typeof obj === "object" && (!obj.__proto__ || obj.__proto__ === Object.prototype || Array.isArray(obj));
30
+ return obj != null && typeof obj === "object" && (obj[$PROXY] || !obj.__proto__ || obj.__proto__ === Object.prototype || Array.isArray(obj));
31
31
  }
32
32
  function unwrap(item, set = new Set()) {
33
33
  let result, unwrapped, v, prop;
@@ -61,7 +61,7 @@ function getDataNodes(target) {
61
61
  }
62
62
  function proxyDescriptor(target, property) {
63
63
  const desc = Reflect.getOwnPropertyDescriptor(target, property);
64
- if (!desc || desc.get || property === $PROXY || property === $NODE || property === $NAME) return desc;
64
+ if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;
65
65
  delete desc.value;
66
66
  delete desc.writable;
67
67
  desc.get = () => target[$PROXY][property];
@@ -28,7 +28,7 @@ function wrap$1(value, name) {
28
28
  return p;
29
29
  }
30
30
  function isWrappable(obj) {
31
- return obj != null && typeof obj === "object" && (!obj.__proto__ || obj.__proto__ === Object.prototype || Array.isArray(obj));
31
+ return obj != null && typeof obj === "object" && (obj[solidJs.$PROXY] || !obj.__proto__ || obj.__proto__ === Object.prototype || Array.isArray(obj));
32
32
  }
33
33
  function unwrap(item, set = new Set()) {
34
34
  let result, unwrapped, v, prop;
@@ -62,7 +62,7 @@ function getDataNodes(target) {
62
62
  }
63
63
  function proxyDescriptor(target, property) {
64
64
  const desc = Reflect.getOwnPropertyDescriptor(target, property);
65
- if (!desc || desc.get || property === solidJs.$PROXY || property === $NODE || property === $NAME) return desc;
65
+ if (!desc || desc.get || !desc.configurable || property === solidJs.$PROXY || property === $NODE || property === $NAME) return desc;
66
66
  delete desc.value;
67
67
  delete desc.writable;
68
68
  desc.get = () => target[solidJs.$PROXY][property];
@@ -24,7 +24,7 @@ function wrap$1(value, name) {
24
24
  return p;
25
25
  }
26
26
  function isWrappable(obj) {
27
- return obj != null && typeof obj === "object" && (!obj.__proto__ || obj.__proto__ === Object.prototype || Array.isArray(obj));
27
+ return obj != null && typeof obj === "object" && (obj[$PROXY] || !obj.__proto__ || obj.__proto__ === Object.prototype || Array.isArray(obj));
28
28
  }
29
29
  function unwrap(item, set = new Set()) {
30
30
  let result, unwrapped, v, prop;
@@ -58,7 +58,7 @@ function getDataNodes(target) {
58
58
  }
59
59
  function proxyDescriptor(target, property) {
60
60
  const desc = Reflect.getOwnPropertyDescriptor(target, property);
61
- if (!desc || desc.get || property === $PROXY || property === $NODE || property === $NAME) return desc;
61
+ if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE || property === $NAME) return desc;
62
62
  delete desc.value;
63
63
  delete desc.writable;
64
64
  desc.get = () => target[$PROXY][property];
@@ -33,7 +33,7 @@ export declare type Store<T> = {
33
33
  } & {
34
34
  [$RAW]?: T;
35
35
  } & AddSymbolToPrimitive<T> & AddSymbolIterator<T> & AddSymbolToStringTag<T> & AddCallable<T>;
36
- export declare function isWrappable(obj: any): boolean;
36
+ export declare function isWrappable(obj: any): any;
37
37
  export declare function unwrap<T extends StoreNode>(item: any, set?: Set<unknown>): T;
38
38
  export declare function getDataNodes(target: StoreNode): any;
39
39
  export declare function proxyDescriptor(target: StoreNode, property: string | number | symbol): PropertyDescriptor | undefined;
package/types/jsx.d.ts CHANGED
@@ -92,6 +92,7 @@ export namespace JSX {
92
92
  onFocusIn?: EventHandlerUnion<T, FocusEvent>;
93
93
  onBlur?: EventHandlerUnion<T, FocusEvent>;
94
94
  onChange?: EventHandlerUnion<T, Event>;
95
+ onInvalid?: EventHandlerUnion<T, Event>;
95
96
  onInput?: EventHandlerUnion<T, InputEvent>;
96
97
  onBeforeInput?: EventHandlerUnion<T, InputEvent>;
97
98
  onReset?: EventHandlerUnion<T, Event>;
@@ -180,6 +181,7 @@ export namespace JSX {
180
181
  onfocusin?: EventHandlerUnion<T, FocusEvent>;
181
182
  onblur?: EventHandlerUnion<T, FocusEvent>;
182
183
  onchange?: EventHandlerUnion<T, Event>;
184
+ oninvalid?: EventHandlerUnion<T, Event>;
183
185
  oninput?: EventHandlerUnion<T, InputEvent>;
184
186
  onbeforeinput?: EventHandlerUnion<T, InputEvent>;
185
187
  onreset?: EventHandlerUnion<T, Event>;
@@ -1,3 +1,3 @@
1
- export { createRoot, createSignal, createComputed, createRenderEffect, createEffect, createDeferred, createSelector, createMemo, getListener, onMount, onCleanup, onError, untrack, batch, on, createContext, useContext, getOwner, runWithOwner, equalFn, requestCallback, mapArray, observable, from, $PROXY, DEV } from "./reactive";
1
+ export { createRoot, createSignal, createComputed, createRenderEffect, createEffect, createDeferred, createSelector, createMemo, getListener, onMount, onCleanup, onError, untrack, batch, on, children, createContext, useContext, getOwner, runWithOwner, equalFn, requestCallback, mapArray, observable, from, $PROXY, DEV } from "./reactive";
2
2
  export { awaitSuspense, mergeProps, splitProps, createComponent, For, Index, Show, Switch, Match, ErrorBoundary, Suspense, SuspenseList, createResource, enableScheduling, startTransition, useTransition, createUniqueId, lazy, sharedConfig } from "./rendering";
3
3
  export type { Component, Resource } from "./rendering";
package/web/dist/dev.cjs CHANGED
@@ -203,36 +203,19 @@ function insert(parent, accessor, marker, initial) {
203
203
  solidJs.createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);
204
204
  }
205
205
  function assign(node, props, isSVG, skipChildren, prevProps = {}) {
206
- let isCE, isProp, isChildProp;
206
+ for (const prop in prevProps) {
207
+ if (!(prop in props)) {
208
+ if (prop === "children") continue;
209
+ assignProp(node, prop, null, prevProps[prop], isSVG);
210
+ }
211
+ }
207
212
  for (const prop in props) {
208
213
  if (prop === "children") {
209
214
  if (!skipChildren) insertExpression(node, props.children);
210
215
  continue;
211
216
  }
212
217
  const value = props[prop];
213
- if (value === prevProps[prop]) continue;
214
- if (prop === "style") {
215
- style(node, value, prevProps[prop]);
216
- } else if (prop === "classList") {
217
- classList(node, value, prevProps[prop]);
218
- } else if (prop === "ref") {
219
- value(node);
220
- } else if (prop.slice(0, 3) === "on:") {
221
- node.addEventListener(prop.slice(3), value);
222
- } else if (prop.slice(0, 10) === "oncapture:") {
223
- node.addEventListener(prop.slice(10), value, true);
224
- } else if (prop.slice(0, 2) === "on") {
225
- const name = prop.slice(2).toLowerCase();
226
- const delegate = DelegatedEvents.has(name);
227
- addEventListener(node, name, value, delegate);
228
- delegate && delegateEvents([name]);
229
- } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) {
230
- if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
231
- } else {
232
- const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
233
- if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);
234
- }
235
- prevProps[prop] = value;
218
+ prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG);
236
219
  }
237
220
  }
238
221
  function hydrate(code, element) {
@@ -314,6 +297,30 @@ function toggleClassKey(node, key, value) {
314
297
  const classNames = key.trim().split(/\s+/);
315
298
  for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);
316
299
  }
300
+ function assignProp(node, prop, value, prev, isSVG) {
301
+ let isCE, isProp, isChildProp;
302
+ if (prop === "style") return style(node, value, prev);
303
+ if (prop === "classList") return classList(node, value, prev);
304
+ if (value === prev) return prev;
305
+ if (prop === "ref") {
306
+ value(node);
307
+ } else if (prop.slice(0, 3) === "on:") {
308
+ node.addEventListener(prop.slice(3), value);
309
+ } else if (prop.slice(0, 10) === "oncapture:") {
310
+ node.addEventListener(prop.slice(10), value, true);
311
+ } else if (prop.slice(0, 2) === "on") {
312
+ const name = prop.slice(2).toLowerCase();
313
+ const delegate = DelegatedEvents.has(name);
314
+ addEventListener(node, name, value, delegate);
315
+ delegate && delegateEvents([name]);
316
+ } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) {
317
+ if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
318
+ } else {
319
+ const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
320
+ if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);
321
+ }
322
+ return value;
323
+ }
317
324
  function eventHandler(e) {
318
325
  const key = `$$${e.type}`;
319
326
  let node = e.composedPath && e.composedPath()[0] || e.target;
package/web/dist/dev.js CHANGED
@@ -200,36 +200,19 @@ function insert(parent, accessor, marker, initial) {
200
200
  createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);
201
201
  }
202
202
  function assign(node, props, isSVG, skipChildren, prevProps = {}) {
203
- let isCE, isProp, isChildProp;
203
+ for (const prop in prevProps) {
204
+ if (!(prop in props)) {
205
+ if (prop === "children") continue;
206
+ assignProp(node, prop, null, prevProps[prop], isSVG);
207
+ }
208
+ }
204
209
  for (const prop in props) {
205
210
  if (prop === "children") {
206
211
  if (!skipChildren) insertExpression(node, props.children);
207
212
  continue;
208
213
  }
209
214
  const value = props[prop];
210
- if (value === prevProps[prop]) continue;
211
- if (prop === "style") {
212
- style(node, value, prevProps[prop]);
213
- } else if (prop === "classList") {
214
- classList(node, value, prevProps[prop]);
215
- } else if (prop === "ref") {
216
- value(node);
217
- } else if (prop.slice(0, 3) === "on:") {
218
- node.addEventListener(prop.slice(3), value);
219
- } else if (prop.slice(0, 10) === "oncapture:") {
220
- node.addEventListener(prop.slice(10), value, true);
221
- } else if (prop.slice(0, 2) === "on") {
222
- const name = prop.slice(2).toLowerCase();
223
- const delegate = DelegatedEvents.has(name);
224
- addEventListener(node, name, value, delegate);
225
- delegate && delegateEvents([name]);
226
- } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) {
227
- if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
228
- } else {
229
- const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
230
- if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);
231
- }
232
- prevProps[prop] = value;
215
+ prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG);
233
216
  }
234
217
  }
235
218
  function hydrate(code, element) {
@@ -311,6 +294,30 @@ function toggleClassKey(node, key, value) {
311
294
  const classNames = key.trim().split(/\s+/);
312
295
  for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);
313
296
  }
297
+ function assignProp(node, prop, value, prev, isSVG) {
298
+ let isCE, isProp, isChildProp;
299
+ if (prop === "style") return style(node, value, prev);
300
+ if (prop === "classList") return classList(node, value, prev);
301
+ if (value === prev) return prev;
302
+ if (prop === "ref") {
303
+ value(node);
304
+ } else if (prop.slice(0, 3) === "on:") {
305
+ node.addEventListener(prop.slice(3), value);
306
+ } else if (prop.slice(0, 10) === "oncapture:") {
307
+ node.addEventListener(prop.slice(10), value, true);
308
+ } else if (prop.slice(0, 2) === "on") {
309
+ const name = prop.slice(2).toLowerCase();
310
+ const delegate = DelegatedEvents.has(name);
311
+ addEventListener(node, name, value, delegate);
312
+ delegate && delegateEvents([name]);
313
+ } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) {
314
+ if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
315
+ } else {
316
+ const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
317
+ if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);
318
+ }
319
+ return value;
320
+ }
314
321
  function eventHandler(e) {
315
322
  const key = `$$${e.type}`;
316
323
  let node = e.composedPath && e.composedPath()[0] || e.target;
@@ -449,6 +449,8 @@ function ssrSpread(props, isSVG, skipChildren) {
449
449
  result += `class="${ssrClassList(value)}"`;
450
450
  } else if (BooleanAttributes.has(prop)) {
451
451
  if (value) result += prop;else continue;
452
+ } else if (prop === "ref" || prop.slice(0, 2) === "on") {
453
+ continue;
452
454
  } else {
453
455
  result += `${Aliases[prop] || prop}="${escape(value, true)}"`;
454
456
  }
@@ -525,7 +527,7 @@ function generateHydrationScript() {
525
527
  resources,
526
528
  eventNames = ["click", "input"]
527
529
  } = solidJs.sharedConfig.context;
528
- let s = `<script${nonce ? ` nonce="${nonce}"` : ""}>(()=>{_$HYDRATION={events:[],completed:new WeakSet};const t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")&&e||t(e.host&&e.host instanceof Node?e.host:e.parentNode)),e=e=>{let o=e.composedPath&&e.composedPath()[0]||e.target,s=t(o);s&&!_$HYDRATION.completed.has(s)&&_$HYDRATION.events.push([s,e])};["${eventNames.join('","')}"].forEach(t=>document.addEventListener(t,e))})();`;
530
+ let s = `<script${nonce ? ` nonce="${nonce}"` : ""}>(()=>{_$HYDRATION={events:[],completed:new WeakSet};const t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),e=e=>{let o=e.composedPath&&e.composedPath()[0]||e.target,s=t(o);s&&!_$HYDRATION.completed.has(s)&&_$HYDRATION.events.push([s,e])};["${eventNames.join('","')}"].forEach(t=>document.addEventListener(t,e))})();`;
529
531
  if (streaming) {
530
532
  s += `(()=>{const e=_$HYDRATION,o={};e.startResource=e=>{let r;o[e]=[new Promise(e=>r=e),r]},e.resolveResource=(e,r)=>{const n=o[e];if(!n)return o[e]=[r];n[1](r)},e.loadResource=e=>{const r=o[e];if(r)return r[0]}})();`;
531
533
  }
@@ -446,6 +446,8 @@ function ssrSpread(props, isSVG, skipChildren) {
446
446
  result += `class="${ssrClassList(value)}"`;
447
447
  } else if (BooleanAttributes.has(prop)) {
448
448
  if (value) result += prop;else continue;
449
+ } else if (prop === "ref" || prop.slice(0, 2) === "on") {
450
+ continue;
449
451
  } else {
450
452
  result += `${Aliases[prop] || prop}="${escape(value, true)}"`;
451
453
  }
@@ -522,7 +524,7 @@ function generateHydrationScript() {
522
524
  resources,
523
525
  eventNames = ["click", "input"]
524
526
  } = sharedConfig.context;
525
- let s = `<script${nonce ? ` nonce="${nonce}"` : ""}>(()=>{_$HYDRATION={events:[],completed:new WeakSet};const t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")&&e||t(e.host&&e.host instanceof Node?e.host:e.parentNode)),e=e=>{let o=e.composedPath&&e.composedPath()[0]||e.target,s=t(o);s&&!_$HYDRATION.completed.has(s)&&_$HYDRATION.events.push([s,e])};["${eventNames.join('","')}"].forEach(t=>document.addEventListener(t,e))})();`;
527
+ let s = `<script${nonce ? ` nonce="${nonce}"` : ""}>(()=>{_$HYDRATION={events:[],completed:new WeakSet};const t=e=>e&&e.hasAttribute&&(e.hasAttribute("data-hk")?e:t(e.host&&e.host instanceof Node?e.host:e.parentNode)),e=e=>{let o=e.composedPath&&e.composedPath()[0]||e.target,s=t(o);s&&!_$HYDRATION.completed.has(s)&&_$HYDRATION.events.push([s,e])};["${eventNames.join('","')}"].forEach(t=>document.addEventListener(t,e))})();`;
526
528
  if (streaming) {
527
529
  s += `(()=>{const e=_$HYDRATION,o={};e.startResource=e=>{let r;o[e]=[new Promise(e=>r=e),r]},e.resolveResource=(e,r)=>{const n=o[e];if(!n)return o[e]=[r];n[1](r)},e.loadResource=e=>{const r=o[e];if(r)return r[0]}})();`;
528
530
  }
package/web/dist/web.cjs CHANGED
@@ -202,36 +202,19 @@ function insert(parent, accessor, marker, initial) {
202
202
  solidJs.createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);
203
203
  }
204
204
  function assign(node, props, isSVG, skipChildren, prevProps = {}) {
205
- let isCE, isProp, isChildProp;
205
+ for (const prop in prevProps) {
206
+ if (!(prop in props)) {
207
+ if (prop === "children") continue;
208
+ assignProp(node, prop, null, prevProps[prop], isSVG);
209
+ }
210
+ }
206
211
  for (const prop in props) {
207
212
  if (prop === "children") {
208
213
  if (!skipChildren) insertExpression(node, props.children);
209
214
  continue;
210
215
  }
211
216
  const value = props[prop];
212
- if (value === prevProps[prop]) continue;
213
- if (prop === "style") {
214
- style(node, value, prevProps[prop]);
215
- } else if (prop === "classList") {
216
- classList(node, value, prevProps[prop]);
217
- } else if (prop === "ref") {
218
- value(node);
219
- } else if (prop.slice(0, 3) === "on:") {
220
- node.addEventListener(prop.slice(3), value);
221
- } else if (prop.slice(0, 10) === "oncapture:") {
222
- node.addEventListener(prop.slice(10), value, true);
223
- } else if (prop.slice(0, 2) === "on") {
224
- const name = prop.slice(2).toLowerCase();
225
- const delegate = DelegatedEvents.has(name);
226
- addEventListener(node, name, value, delegate);
227
- delegate && delegateEvents([name]);
228
- } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) {
229
- if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
230
- } else {
231
- const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
232
- if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);
233
- }
234
- prevProps[prop] = value;
217
+ prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG);
235
218
  }
236
219
  }
237
220
  function hydrate(code, element) {
@@ -313,6 +296,30 @@ function toggleClassKey(node, key, value) {
313
296
  const classNames = key.trim().split(/\s+/);
314
297
  for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);
315
298
  }
299
+ function assignProp(node, prop, value, prev, isSVG) {
300
+ let isCE, isProp, isChildProp;
301
+ if (prop === "style") return style(node, value, prev);
302
+ if (prop === "classList") return classList(node, value, prev);
303
+ if (value === prev) return prev;
304
+ if (prop === "ref") {
305
+ value(node);
306
+ } else if (prop.slice(0, 3) === "on:") {
307
+ node.addEventListener(prop.slice(3), value);
308
+ } else if (prop.slice(0, 10) === "oncapture:") {
309
+ node.addEventListener(prop.slice(10), value, true);
310
+ } else if (prop.slice(0, 2) === "on") {
311
+ const name = prop.slice(2).toLowerCase();
312
+ const delegate = DelegatedEvents.has(name);
313
+ addEventListener(node, name, value, delegate);
314
+ delegate && delegateEvents([name]);
315
+ } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) {
316
+ if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
317
+ } else {
318
+ const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
319
+ if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);
320
+ }
321
+ return value;
322
+ }
316
323
  function eventHandler(e) {
317
324
  const key = `$$${e.type}`;
318
325
  let node = e.composedPath && e.composedPath()[0] || e.target;
package/web/dist/web.js CHANGED
@@ -199,36 +199,19 @@ function insert(parent, accessor, marker, initial) {
199
199
  createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);
200
200
  }
201
201
  function assign(node, props, isSVG, skipChildren, prevProps = {}) {
202
- let isCE, isProp, isChildProp;
202
+ for (const prop in prevProps) {
203
+ if (!(prop in props)) {
204
+ if (prop === "children") continue;
205
+ assignProp(node, prop, null, prevProps[prop], isSVG);
206
+ }
207
+ }
203
208
  for (const prop in props) {
204
209
  if (prop === "children") {
205
210
  if (!skipChildren) insertExpression(node, props.children);
206
211
  continue;
207
212
  }
208
213
  const value = props[prop];
209
- if (value === prevProps[prop]) continue;
210
- if (prop === "style") {
211
- style(node, value, prevProps[prop]);
212
- } else if (prop === "classList") {
213
- classList(node, value, prevProps[prop]);
214
- } else if (prop === "ref") {
215
- value(node);
216
- } else if (prop.slice(0, 3) === "on:") {
217
- node.addEventListener(prop.slice(3), value);
218
- } else if (prop.slice(0, 10) === "oncapture:") {
219
- node.addEventListener(prop.slice(10), value, true);
220
- } else if (prop.slice(0, 2) === "on") {
221
- const name = prop.slice(2).toLowerCase();
222
- const delegate = DelegatedEvents.has(name);
223
- addEventListener(node, name, value, delegate);
224
- delegate && delegateEvents([name]);
225
- } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) {
226
- if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
227
- } else {
228
- const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
229
- if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);
230
- }
231
- prevProps[prop] = value;
214
+ prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG);
232
215
  }
233
216
  }
234
217
  function hydrate(code, element) {
@@ -310,6 +293,30 @@ function toggleClassKey(node, key, value) {
310
293
  const classNames = key.trim().split(/\s+/);
311
294
  for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);
312
295
  }
296
+ function assignProp(node, prop, value, prev, isSVG) {
297
+ let isCE, isProp, isChildProp;
298
+ if (prop === "style") return style(node, value, prev);
299
+ if (prop === "classList") return classList(node, value, prev);
300
+ if (value === prev) return prev;
301
+ if (prop === "ref") {
302
+ value(node);
303
+ } else if (prop.slice(0, 3) === "on:") {
304
+ node.addEventListener(prop.slice(3), value);
305
+ } else if (prop.slice(0, 10) === "oncapture:") {
306
+ node.addEventListener(prop.slice(10), value, true);
307
+ } else if (prop.slice(0, 2) === "on") {
308
+ const name = prop.slice(2).toLowerCase();
309
+ const delegate = DelegatedEvents.has(name);
310
+ addEventListener(node, name, value, delegate);
311
+ delegate && delegateEvents([name]);
312
+ } else if ((isChildProp = ChildProperties.has(prop)) || !isSVG && (PropAliases[prop] || (isProp = Properties.has(prop))) || (isCE = node.nodeName.includes("-"))) {
313
+ if (isCE && !isProp && !isChildProp) node[toPropertyName(prop)] = value;else node[PropAliases[prop] || prop] = value;
314
+ } else {
315
+ const ns = isSVG && prop.indexOf(":") > -1 && SVGNamespace[prop.split(":")[0]];
316
+ if (ns) setAttributeNS(node, ns, prop, value);else setAttribute(node, Aliases[prop] || prop, value);
317
+ }
318
+ return value;
319
+ }
313
320
  function eventHandler(e) {
314
321
  const key = `$$${e.type}`;
315
322
  let node = e.composedPath && e.composedPath()[0] || e.target;