Fix missing SxExpr wraps in events + pretty-print sx in dev mode + multi-expr render
- Wrap 15 call sites in events/sx_components.py where sx-generating functions were passed as plain strings to sx_call(), causing raw s-expression source to leak into the rendered page. - Add dev-mode pretty-printing (RELOAD=true) for sx responses and full page sx source — indented output in Network tab and View Source. - Fix Sx.render to handle multiple top-level expressions by falling back to parseAll and returning a DocumentFragment. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1262,9 +1262,23 @@
|
||||
|
||||
// DOM Renderer
|
||||
render: function (exprOrText, extraEnv) {
|
||||
var expr = typeof exprOrText === "string" ? parse(exprOrText) : exprOrText;
|
||||
var env = extraEnv ? merge({}, _componentEnv, extraEnv) : _componentEnv;
|
||||
return renderDOM(expr, env);
|
||||
if (typeof exprOrText === "string") {
|
||||
// Try single expression first; fall back to multi-expression fragment
|
||||
try {
|
||||
return renderDOM(parse(exprOrText), env);
|
||||
} catch (e) {
|
||||
var exprs = parseAll(exprOrText);
|
||||
if (exprs.length === 0) throw e;
|
||||
var frag = document.createDocumentFragment();
|
||||
for (var i = 0; i < exprs.length; i++) {
|
||||
var node = renderDOM(exprs[i], env);
|
||||
if (node) frag.appendChild(node);
|
||||
}
|
||||
return frag;
|
||||
}
|
||||
}
|
||||
return renderDOM(exprOrText, env);
|
||||
},
|
||||
|
||||
// String Renderer (matches Python html.render output)
|
||||
|
||||
Reference in New Issue
Block a user