diff --git a/reflex/components/component.py b/reflex/components/component.py index 5bd527c75..8ee9bf67d 100644 --- a/reflex/components/component.py +++ b/reflex/components/component.py @@ -70,7 +70,6 @@ from reflex.vars.base import ( cached_property_no_lock, ) from reflex.vars.function import ArgsFunctionOperation, FunctionStringVar -from reflex.vars.hooks import HookVar from reflex.vars.number import ternary_operation from reflex.vars.object import ObjectVar from reflex.vars.sequence import LiteralArrayVar @@ -1543,10 +1542,6 @@ class Component(BaseComponent, ABC): if str(hook) in code: code[str(hook)] = VarData.merge(var_data, code[str(hook)]) - elif isinstance(hook, HookVar): - code[str(hook)] = VarData.merge( - var_data, VarData(position=hook.position) - ) else: code[str(hook)] = var_data @@ -2253,7 +2248,7 @@ class StatefulComponent(BaseComponent): ) # Store the memoized function name and hook code for this event trigger. trigger_memo[event_trigger] = ( - HookVar(_js_expr=memo_name)._replace( + Var(_js_expr=memo_name)._replace( _var_type=EventChain, merge_var_data=memo_var_data ), f"const {memo_name} = useCallback({rendered_chain}, [{', '.join(var_deps)}])", diff --git a/reflex/components/core/clipboard.py b/reflex/components/core/clipboard.py index a0c0b7914..644de80d0 100644 --- a/reflex/components/core/clipboard.py +++ b/reflex/components/core/clipboard.py @@ -11,8 +11,7 @@ from reflex.event import EventChain, EventHandler, passthrough_event_spec from reflex.utils.format import format_prop, wrap from reflex.utils.imports import ImportVar from reflex.vars import get_unique_variable_name -from reflex.vars.base import Var -from reflex.vars.hooks import HookVar +from reflex.vars.base import Var, VarData class Clipboard(Fragment): @@ -74,7 +73,7 @@ class Clipboard(Fragment): ), } - def add_hooks(self) -> list[str | Var]: + def add_hooks(self) -> list[str | Var[str]]: """Add hook to register paste event listener. Returns: @@ -86,8 +85,13 @@ class Clipboard(Fragment): if isinstance(on_paste, EventChain): on_paste = wrap(str(format_prop(on_paste)).strip("{}"), "(") hook_expr = f"usePasteHandler({self.targets!s}, {self.on_paste_event_actions!s}, {on_paste!s})" + return [ - HookVar.create(hook_expr, _position=Hooks.HookPosition.POST_TRIGGER), + Var( + hook_expr, + _var_type="str", + _var_data=VarData(position=Hooks.HookPosition.POST_TRIGGER), + ), ] diff --git a/reflex/components/core/clipboard.pyi b/reflex/components/core/clipboard.pyi index 761467973..328554f2a 100644 --- a/reflex/components/core/clipboard.pyi +++ b/reflex/components/core/clipboard.pyi @@ -71,6 +71,6 @@ class Clipboard(Fragment): ... def add_imports(self) -> dict[str, ImportVar]: ... - def add_hooks(self) -> list[str | Var]: ... + def add_hooks(self) -> list[str | Var[str]]: ... clipboard = Clipboard.create diff --git a/reflex/vars/hooks.py b/reflex/vars/hooks.py deleted file mode 100644 index 6c86fe187..000000000 --- a/reflex/vars/hooks.py +++ /dev/null @@ -1,46 +0,0 @@ -"""A module for hooks-related Var.""" - -from __future__ import annotations - -import dataclasses -import sys - -from reflex.constants import Hooks - -from .base import Var, VarData - - -@dataclasses.dataclass( - eq=False, - frozen=True, - **{"slots": True} if sys.version_info >= (3, 10) else {}, -) -class HookVar(Var): - """A var class for representing a hook.""" - - position: Hooks.HookPosition | None = None - - @classmethod - def create( - cls, - _hook_expr: str, - _var_data: VarData | None = None, - _position: Hooks.HookPosition | None = None, - ): - """Create a hook var. - - Args: - _hook_expr: The hook expression. - _position: The position of the hook in the component. - - Returns: - The hook var. - """ - hook_var = cls( - _js_expr=_hook_expr, - _var_type="str", - _var_data=_var_data, - position=_position, - ) - # print("HookVar.create", _hook_expr, hook_var.position) - return hook_var