Fix custom element check: require keyword arg to disambiguate from variables
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 3m14s
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 3m14s
Hyphenated names like app-url are variables, not custom elements. Only treat as custom element when first arg is a Keyword (tag call pattern). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1194,7 +1194,7 @@
|
|||||||
var h = v[0];
|
var h = v[0];
|
||||||
if (!isSym(h)) return false;
|
if (!isSym(h)) return false;
|
||||||
var n = h.name;
|
var n = h.name;
|
||||||
return !!(HTML_TAGS[n] || SVG_TAGS[n] || n === "<>" || n === "raw!" || n.charAt(0) === "~" || n.indexOf("html:") === 0 || n.indexOf("-") > 0);
|
return !!(HTML_TAGS[n] || SVG_TAGS[n] || n === "<>" || n === "raw!" || n.charAt(0) === "~" || n.indexOf("html:") === 0 || (n.indexOf("-") > 0 && v.length > 1 && isKw(v[1])));
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderComponentDOM(comp, args, env) {
|
function renderComponentDOM(comp, args, env) {
|
||||||
@@ -1317,8 +1317,8 @@
|
|||||||
return warn;
|
return warn;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Custom element (hyphenated name) → render as element
|
// Custom element (hyphenated name with keyword attrs) → render as element
|
||||||
if (name.indexOf("-") > 0) return renderElement(name, expr.slice(1), env, ns);
|
if (name.indexOf("-") > 0 && expr.length > 1 && isKw(expr[1])) return renderElement(name, expr.slice(1), env, ns);
|
||||||
|
|
||||||
// SVG/MathML namespace auto-detection: inside (svg ...) or (math ...),
|
// SVG/MathML namespace auto-detection: inside (svg ...) or (math ...),
|
||||||
// unknown tags are created with the inherited namespace
|
// unknown tags are created with the inherited namespace
|
||||||
|
|||||||
@@ -672,8 +672,8 @@ async def _arender_list(expr: list, env: dict[str, Any], ctx: RequestContext) ->
|
|||||||
if isinstance(val, Component):
|
if isinstance(val, Component):
|
||||||
return await _arender_component(val, expr[1:], env, ctx)
|
return await _arender_component(val, expr[1:], env, ctx)
|
||||||
|
|
||||||
# Custom element (hyphenated name) → render as tag
|
# Custom element (hyphenated name with keyword attrs) → tag
|
||||||
if "-" in name:
|
if "-" in name and len(expr) > 1 and isinstance(expr[1], Keyword):
|
||||||
return await _arender_element(name, expr[1:], env, ctx)
|
return await _arender_element(name, expr[1:], env, ctx)
|
||||||
|
|
||||||
# SVG/MathML context → unknown names are child elements
|
# SVG/MathML context → unknown names are child elements
|
||||||
@@ -1116,8 +1116,8 @@ async def _aser(expr: Any, env: dict[str, Any], ctx: RequestContext) -> Any:
|
|||||||
expanded = _expand_macro(val, expr[1:], env)
|
expanded = _expand_macro(val, expr[1:], env)
|
||||||
return await _aser(expanded, env, ctx)
|
return await _aser(expanded, env, ctx)
|
||||||
|
|
||||||
# Custom element (hyphenated name) → serialize as tag
|
# Custom element (hyphenated name with keyword attrs) → serialize as tag
|
||||||
if "-" in name:
|
if "-" in name and len(expr) > 1 and isinstance(expr[1], Keyword):
|
||||||
return await _aser_call(name, expr[1:], env, ctx)
|
return await _aser_call(name, expr[1:], env, ctx)
|
||||||
|
|
||||||
# SVG/MathML context → unknown names are child elements
|
# SVG/MathML context → unknown names are child elements
|
||||||
|
|||||||
@@ -468,8 +468,8 @@ def _render_list(expr: list, env: dict[str, Any]) -> str:
|
|||||||
return _render_component(val, expr[1:], env)
|
return _render_component(val, expr[1:], env)
|
||||||
# Fall through to evaluation
|
# Fall through to evaluation
|
||||||
|
|
||||||
# --- Custom element (hyphenated name) → render as tag ------------
|
# --- Custom element (hyphenated name with keyword attrs) → tag ----
|
||||||
if "-" in name:
|
if "-" in name and len(expr) > 1 and isinstance(expr[1], Keyword):
|
||||||
return _render_element(name, expr[1:], env)
|
return _render_element(name, expr[1:], env)
|
||||||
|
|
||||||
# --- SVG/MathML context → unknown names are child elements --------
|
# --- SVG/MathML context → unknown names are child elements --------
|
||||||
|
|||||||
Reference in New Issue
Block a user