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.
- package/dist/dev.cjs +7 -6
- package/dist/dev.js +567 -325
- package/dist/server.cjs +1 -1
- package/dist/server.js +169 -75
- package/dist/solid.cjs +7 -6
- package/dist/solid.js +494 -283
- package/h/dist/h.js +40 -9
- package/h/jsx-runtime/dist/jsx.js +1 -1
- package/h/jsx-runtime/types/index.d.ts +13 -10
- package/h/jsx-runtime/types/jsx.d.ts +22 -1
- package/h/types/hyperscript.d.ts +11 -11
- package/h/types/index.d.ts +1 -1
- package/html/dist/html.cjs +4 -2
- package/html/dist/html.js +222 -95
- package/html/types/index.d.ts +1 -1
- package/html/types/lit.d.ts +52 -33
- package/package.json +1 -5
- package/store/dist/dev.cjs +1 -1
- package/store/dist/dev.js +123 -43
- package/store/dist/server.cjs +4 -0
- package/store/dist/server.js +23 -8
- package/store/dist/store.cjs +1 -1
- package/store/dist/store.js +114 -40
- package/store/package.json +0 -4
- package/store/types/index.d.ts +21 -7
- package/store/types/modifiers.d.ts +6 -3
- package/store/types/mutable.d.ts +5 -2
- package/store/types/server.d.ts +26 -5
- package/store/types/store.d.ts +219 -62
- package/types/index.d.ts +75 -10
- package/types/jsx.d.ts +35 -8
- package/types/reactive/array.d.ts +12 -4
- package/types/reactive/observable.d.ts +25 -17
- package/types/reactive/scheduler.d.ts +9 -6
- package/types/reactive/signal.d.ts +236 -143
- package/types/render/Suspense.d.ts +5 -5
- package/types/render/component.d.ts +64 -33
- package/types/render/flow.d.ts +43 -31
- package/types/render/hydration.d.ts +15 -15
- package/types/server/index.d.ts +57 -2
- package/types/server/reactive.d.ts +73 -42
- package/types/server/rendering.d.ts +169 -98
- package/universal/dist/dev.js +28 -12
- package/universal/dist/universal.js +28 -12
- package/universal/types/index.d.ts +3 -1
- package/universal/types/universal.d.ts +0 -1
- package/web/dist/dev.cjs +57 -24
- package/web/dist/dev.js +679 -101
- package/web/dist/server.cjs +96 -15
- package/web/dist/server.js +676 -105
- package/web/dist/web.cjs +53 -23
- package/web/dist/web.js +664 -99
- package/web/package.json +0 -4
- package/web/storage/dist/storage.js +3 -3
- package/web/types/client.d.ts +5 -3
- package/web/types/core.d.ts +10 -1
- package/web/types/index.d.ts +27 -10
- package/web/types/server-mock.d.ts +47 -32
- package/web/types/server.d.ts +88 -0
package/web/dist/dev.cjs
CHANGED
|
@@ -122,7 +122,7 @@ function render(code, element, init, options = {}) {
|
|
|
122
122
|
element.textContent = "";
|
|
123
123
|
};
|
|
124
124
|
}
|
|
125
|
-
function template(html,
|
|
125
|
+
function template(html, isImportNode, isSVG) {
|
|
126
126
|
let node;
|
|
127
127
|
const create = () => {
|
|
128
128
|
if (isHydrating()) throw new Error("Failed attempt to create new DOM elements during hydration. Check that the libraries you are using support hydration.");
|
|
@@ -130,7 +130,7 @@ function template(html, isCE, isSVG) {
|
|
|
130
130
|
t.innerHTML = html;
|
|
131
131
|
return isSVG ? t.content.firstChild.firstChild : t.content.firstChild;
|
|
132
132
|
};
|
|
133
|
-
const fn =
|
|
133
|
+
const fn = isImportNode ? () => solidJs.untrack(() => document.importNode(node || (node = create()), true)) : () => (node || (node = create())).cloneNode(true);
|
|
134
134
|
fn.cloneNode = fn;
|
|
135
135
|
return fn;
|
|
136
136
|
}
|
|
@@ -162,6 +162,10 @@ function setAttributeNS(node, namespace, name, value) {
|
|
|
162
162
|
if (isHydrating(node)) return;
|
|
163
163
|
if (value == null) node.removeAttributeNS(namespace, name);else node.setAttributeNS(namespace, name, value);
|
|
164
164
|
}
|
|
165
|
+
function setBoolAttribute(node, name, value) {
|
|
166
|
+
if (isHydrating(node)) return;
|
|
167
|
+
value ? node.setAttribute(name, "") : node.removeAttribute(name);
|
|
168
|
+
}
|
|
165
169
|
function className(node, value) {
|
|
166
170
|
if (isHydrating(node)) return;
|
|
167
171
|
if (value == null) node.removeAttribute("class");else node.className = value;
|
|
@@ -175,7 +179,7 @@ function addEventListener(node, name, handler, delegate) {
|
|
|
175
179
|
} else if (Array.isArray(handler)) {
|
|
176
180
|
const handlerFn = handler[0];
|
|
177
181
|
node.addEventListener(name, handler[0] = e => handlerFn.call(node, handler[1], e));
|
|
178
|
-
} else node.addEventListener(name, handler);
|
|
182
|
+
} else node.addEventListener(name, handler, typeof handler !== "function" && handler);
|
|
179
183
|
}
|
|
180
184
|
function classList(node, value, prev = {}) {
|
|
181
185
|
const classKeys = Object.keys(value || {}),
|
|
@@ -249,7 +253,7 @@ function assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = fals
|
|
|
249
253
|
for (const prop in prevProps) {
|
|
250
254
|
if (!(prop in props)) {
|
|
251
255
|
if (prop === "children") continue;
|
|
252
|
-
prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef);
|
|
256
|
+
prevProps[prop] = assignProp(node, prop, null, prevProps[prop], isSVG, skipRef, props);
|
|
253
257
|
}
|
|
254
258
|
}
|
|
255
259
|
for (const prop in props) {
|
|
@@ -258,7 +262,7 @@ function assign(node, props, isSVG, skipChildren, prevProps = {}, skipRef = fals
|
|
|
258
262
|
continue;
|
|
259
263
|
}
|
|
260
264
|
const value = props[prop];
|
|
261
|
-
prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef);
|
|
265
|
+
prevProps[prop] = assignProp(node, prop, value, prevProps[prop], isSVG, skipRef, props);
|
|
262
266
|
}
|
|
263
267
|
}
|
|
264
268
|
function hydrate$1(code, element, options = {}) {
|
|
@@ -285,7 +289,10 @@ function getNextElement(template) {
|
|
|
285
289
|
key,
|
|
286
290
|
hydrating = isHydrating();
|
|
287
291
|
if (!hydrating || !(node = solidJs.sharedConfig.registry.get(key = getHydrationKey()))) {
|
|
288
|
-
if (hydrating)
|
|
292
|
+
if (hydrating) {
|
|
293
|
+
solidJs.sharedConfig.done = true;
|
|
294
|
+
throw new Error(`Hydration Mismatch. Unable to find DOM nodes for hydration key: ${key}\n${template ? template().outerHTML : ""}`);
|
|
295
|
+
}
|
|
289
296
|
return template();
|
|
290
297
|
}
|
|
291
298
|
if (solidJs.sharedConfig.completed) solidJs.sharedConfig.completed.add(node);
|
|
@@ -322,6 +329,7 @@ function runHydrationEvents() {
|
|
|
322
329
|
completed,
|
|
323
330
|
events
|
|
324
331
|
} = solidJs.sharedConfig;
|
|
332
|
+
if (!events) return;
|
|
325
333
|
events.queued = false;
|
|
326
334
|
while (events.length) {
|
|
327
335
|
const [el, e] = events[0];
|
|
@@ -347,7 +355,7 @@ function toggleClassKey(node, key, value) {
|
|
|
347
355
|
const classNames = key.trim().split(/\s+/);
|
|
348
356
|
for (let i = 0, nameLen = classNames.length; i < nameLen; i++) node.classList.toggle(classNames[i], value);
|
|
349
357
|
}
|
|
350
|
-
function assignProp(node, prop, value, prev, isSVG, skipRef) {
|
|
358
|
+
function assignProp(node, prop, value, prev, isSVG, skipRef, props) {
|
|
351
359
|
let isCE, isProp, isChildProp, propAlias, forceProp;
|
|
352
360
|
if (prop === "style") return style(node, value, prev);
|
|
353
361
|
if (prop === "classList") return classList(node, value, prev);
|
|
@@ -356,8 +364,8 @@ function assignProp(node, prop, value, prev, isSVG, skipRef) {
|
|
|
356
364
|
if (!skipRef) value(node);
|
|
357
365
|
} else if (prop.slice(0, 3) === "on:") {
|
|
358
366
|
const e = prop.slice(3);
|
|
359
|
-
prev && node.removeEventListener(e, prev);
|
|
360
|
-
value && node.addEventListener(e, value);
|
|
367
|
+
prev && node.removeEventListener(e, prev, typeof prev !== "function" && prev);
|
|
368
|
+
value && node.addEventListener(e, value, typeof value !== "function" && value);
|
|
361
369
|
} else if (prop.slice(0, 10) === "oncapture:") {
|
|
362
370
|
const e = prop.slice(10);
|
|
363
371
|
prev && node.removeEventListener(e, prev, true);
|
|
@@ -375,7 +383,9 @@ function assignProp(node, prop, value, prev, isSVG, skipRef) {
|
|
|
375
383
|
}
|
|
376
384
|
} else if (prop.slice(0, 5) === "attr:") {
|
|
377
385
|
setAttribute(node, prop.slice(5), value);
|
|
378
|
-
} else if (
|
|
386
|
+
} else if (prop.slice(0, 5) === "bool:") {
|
|
387
|
+
setBoolAttribute(node, prop.slice(5), value);
|
|
388
|
+
} 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("-") || 'is' in props)) {
|
|
379
389
|
if (forceProp) {
|
|
380
390
|
prop = prop.slice(5);
|
|
381
391
|
isProp = true;
|
|
@@ -391,30 +401,52 @@ function eventHandler(e) {
|
|
|
391
401
|
if (solidJs.sharedConfig.registry && solidJs.sharedConfig.events) {
|
|
392
402
|
if (solidJs.sharedConfig.events.find(([el, ev]) => ev === e)) return;
|
|
393
403
|
}
|
|
404
|
+
let node = e.target;
|
|
394
405
|
const key = `$$${e.type}`;
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
configurable: true,
|
|
399
|
-
value: node
|
|
400
|
-
});
|
|
401
|
-
}
|
|
402
|
-
Object.defineProperty(e, "currentTarget", {
|
|
406
|
+
const oriTarget = e.target;
|
|
407
|
+
const oriCurrentTarget = e.currentTarget;
|
|
408
|
+
const retarget = value => Object.defineProperty(e, "target", {
|
|
403
409
|
configurable: true,
|
|
404
|
-
|
|
405
|
-
return node || document;
|
|
406
|
-
}
|
|
410
|
+
value
|
|
407
411
|
});
|
|
408
|
-
|
|
409
|
-
while (node) {
|
|
412
|
+
const handleNode = () => {
|
|
410
413
|
const handler = node[key];
|
|
411
414
|
if (handler && !node.disabled) {
|
|
412
415
|
const data = node[`${key}Data`];
|
|
413
416
|
data !== undefined ? handler.call(node, data, e) : handler.call(node, e);
|
|
414
417
|
if (e.cancelBubble) return;
|
|
415
418
|
}
|
|
416
|
-
node
|
|
419
|
+
node.host && node.contains(e.target) && !node.host._$host && retarget(node.host);
|
|
420
|
+
return true;
|
|
421
|
+
};
|
|
422
|
+
const walkUpTree = () => {
|
|
423
|
+
while (handleNode() && (node = node._$host || node.parentNode || node.host));
|
|
424
|
+
};
|
|
425
|
+
Object.defineProperty(e, "currentTarget", {
|
|
426
|
+
configurable: true,
|
|
427
|
+
get() {
|
|
428
|
+
return node || document;
|
|
429
|
+
}
|
|
430
|
+
});
|
|
431
|
+
if (solidJs.sharedConfig.registry && !solidJs.sharedConfig.done) solidJs.sharedConfig.done = _$HY.done = true;
|
|
432
|
+
if (e.composedPath) {
|
|
433
|
+
const path = e.composedPath();
|
|
434
|
+
retarget(path[0]);
|
|
435
|
+
for (let i = 0; i < path.length - 2; i++) {
|
|
436
|
+
node = path[i];
|
|
437
|
+
if (!handleNode()) break;
|
|
438
|
+
if (node._$host) {
|
|
439
|
+
node = node._$host;
|
|
440
|
+
walkUpTree();
|
|
441
|
+
break;
|
|
442
|
+
}
|
|
443
|
+
if (node.parentNode === oriCurrentTarget) {
|
|
444
|
+
break;
|
|
445
|
+
}
|
|
446
|
+
}
|
|
417
447
|
}
|
|
448
|
+
else walkUpTree();
|
|
449
|
+
retarget(oriTarget);
|
|
418
450
|
}
|
|
419
451
|
function insertExpression(parent, value, current, marker, unwrapArray) {
|
|
420
452
|
const hydrating = isHydrating(parent);
|
|
@@ -756,6 +788,7 @@ exports.resolveSSRNode = resolveSSRNode;
|
|
|
756
788
|
exports.runHydrationEvents = runHydrationEvents;
|
|
757
789
|
exports.setAttribute = setAttribute;
|
|
758
790
|
exports.setAttributeNS = setAttributeNS;
|
|
791
|
+
exports.setBoolAttribute = setBoolAttribute;
|
|
759
792
|
exports.setProperty = setProperty;
|
|
760
793
|
exports.spread = spread;
|
|
761
794
|
exports.ssr = ssr;
|