Guard domAppend/domInsertAfter against spread values

Spread values (from ~cssx/tw etc.) are attribute dicts, not DOM nodes.
When they appear in non-element contexts (fragments, islands, lakes,
reactive branches), they must not be passed to appendChild/insertBefore.

Add _spread guard to platform domAppend and domInsertAfter — fixes
TypeError: Node.appendChild: Argument 1 does not implement interface Node.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-13 03:35:00 +00:00
parent c3430ade90
commit 9284a946ba
2 changed files with 5 additions and 5 deletions

View File

@@ -1620,7 +1620,7 @@ PLATFORM_DOM_JS = """
}
function domAppend(parent, child) {
if (parent && child) parent.appendChild(child);
if (parent && child && !child._spread) parent.appendChild(child);
}
function domPrepend(parent, child) {
@@ -1692,7 +1692,7 @@ PLATFORM_DOM_JS = """
}
function domInsertAfter(ref, node) {
if (ref && ref.parentNode && node) {
if (ref && ref.parentNode && node && !node._spread) {
ref.parentNode.insertBefore(node, ref.nextSibling);
}
}