Create StatefulComponent for LiteralComponentVar

TODO: actually pass through locals properly
This commit is contained in:
Masen Furer 2025-01-27 06:05:26 -08:00
parent 2ffa698c6b
commit ec02b2c2db
No known key found for this signature in database
GPG Key ID: B0008AD22B3B3A95

View File

@ -2274,6 +2274,10 @@ class StatefulComponent(BaseComponent):
return _compile_component(self)
def __getattr__(self, name) -> Any:
# if we don't provide the attribute, get it from the wrapped component
return getattr(self.component, name)
@classmethod
def compile_from(cls, component: BaseComponent) -> BaseComponent:
"""Walk through the component tree and memoize all stateful components.
@ -2474,6 +2478,8 @@ class LiteralComponentVar(CachedVarOperation, LiteralVar, ComponentVar):
Returns:
The var.
"""
if not isinstance(value, StatefulComponent):
value = StatefulComponent.compile_from(value) or value
return LiteralComponentVar(
_js_expr="",
_var_type=type(value),