reflex 0.6.0a1__py3-none-any.whl → 0.6.0a3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of reflex might be problematic. Click here for more details.

Files changed (252) hide show
  1. reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +2 -2
  2. reflex/.templates/jinja/web/pages/_app.js.jinja2 +1 -1
  3. reflex/.templates/jinja/web/pages/utils.js.jinja2 +2 -2
  4. reflex/__init__.py +8 -2
  5. reflex/__init__.pyi +2 -1
  6. reflex/app.py +10 -4
  7. reflex/base.py +1 -1
  8. reflex/compiler/compiler.py +2 -2
  9. reflex/compiler/utils.py +3 -3
  10. reflex/components/base/app_wrap.py +2 -2
  11. reflex/components/base/app_wrap.pyi +17 -27
  12. reflex/components/base/bare.py +4 -5
  13. reflex/components/base/body.pyi +17 -27
  14. reflex/components/base/document.pyi +81 -131
  15. reflex/components/base/error_boundary.py +6 -7
  16. reflex/components/base/error_boundary.pyi +20 -33
  17. reflex/components/base/fragment.pyi +17 -27
  18. reflex/components/base/head.pyi +33 -53
  19. reflex/components/base/link.py +1 -1
  20. reflex/components/base/link.pyi +33 -54
  21. reflex/components/base/meta.pyi +65 -105
  22. reflex/components/base/script.py +1 -2
  23. reflex/components/base/script.pyi +21 -38
  24. reflex/components/component.py +45 -47
  25. reflex/components/core/banner.py +23 -27
  26. reflex/components/core/banner.pyi +134 -171
  27. reflex/components/core/breakpoints.py +3 -1
  28. reflex/components/core/client_side_routing.py +2 -3
  29. reflex/components/core/client_side_routing.pyi +33 -54
  30. reflex/components/core/clipboard.py +2 -1
  31. reflex/components/core/clipboard.pyi +20 -33
  32. reflex/components/core/cond.py +5 -5
  33. reflex/components/core/debounce.py +5 -5
  34. reflex/components/core/debounce.pyi +20 -33
  35. reflex/components/core/foreach.py +3 -4
  36. reflex/components/core/html.py +1 -1
  37. reflex/components/core/html.pyi +35 -46
  38. reflex/components/core/match.py +17 -17
  39. reflex/components/core/upload.py +17 -23
  40. reflex/components/core/upload.pyi +78 -124
  41. reflex/components/datadisplay/code.py +9 -10
  42. reflex/components/datadisplay/code.pyi +302 -412
  43. reflex/components/datadisplay/dataeditor.py +8 -10
  44. reflex/components/datadisplay/dataeditor.pyi +40 -53
  45. reflex/components/el/element.pyi +17 -27
  46. reflex/components/el/elements/base.py +1 -1
  47. reflex/components/el/elements/base.pyi +34 -45
  48. reflex/components/el/elements/forms.py +16 -16
  49. reflex/components/el/elements/forms.pyi +554 -707
  50. reflex/components/el/elements/inline.py +1 -1
  51. reflex/components/el/elements/inline.pyi +937 -1218
  52. reflex/components/el/elements/media.py +1 -1
  53. reflex/components/el/elements/media.pyi +786 -997
  54. reflex/components/el/elements/metadata.py +3 -6
  55. reflex/components/el/elements/metadata.pyi +181 -242
  56. reflex/components/el/elements/other.py +1 -1
  57. reflex/components/el/elements/other.pyi +235 -306
  58. reflex/components/el/elements/scripts.py +1 -1
  59. reflex/components/el/elements/scripts.pyi +109 -140
  60. reflex/components/el/elements/sectioning.py +0 -2
  61. reflex/components/el/elements/sectioning.pyi +496 -647
  62. reflex/components/el/elements/tables.py +1 -1
  63. reflex/components/el/elements/tables.pyi +351 -452
  64. reflex/components/el/elements/typography.py +1 -1
  65. reflex/components/el/elements/typography.pyi +506 -657
  66. reflex/components/gridjs/datatable.py +6 -9
  67. reflex/components/gridjs/datatable.pyi +35 -56
  68. reflex/components/lucide/icon.py +1 -1
  69. reflex/components/lucide/icon.pyi +33 -54
  70. reflex/components/markdown/markdown.py +26 -31
  71. reflex/components/markdown/markdown.pyi +27 -37
  72. reflex/components/moment/moment.py +13 -12
  73. reflex/components/moment/moment.pyi +23 -35
  74. reflex/components/next/base.pyi +17 -27
  75. reflex/components/next/image.py +1 -1
  76. reflex/components/next/image.pyi +22 -37
  77. reflex/components/next/link.py +1 -1
  78. reflex/components/next/link.pyi +17 -28
  79. reflex/components/next/video.py +1 -1
  80. reflex/components/next/video.pyi +17 -28
  81. reflex/components/plotly/plotly.py +12 -13
  82. reflex/components/plotly/plotly.pyi +39 -54
  83. reflex/components/props.py +1 -1
  84. reflex/components/radix/__init__.pyi +1 -0
  85. reflex/components/radix/primitives/__init__.pyi +1 -0
  86. reflex/components/radix/primitives/accordion.py +4 -4
  87. reflex/components/radix/primitives/accordion.pyi +424 -495
  88. reflex/components/radix/primitives/base.py +1 -1
  89. reflex/components/radix/primitives/base.pyi +33 -54
  90. reflex/components/radix/primitives/drawer.py +1 -1
  91. reflex/components/radix/primitives/drawer.pyi +172 -273
  92. reflex/components/radix/primitives/form.py +1 -1
  93. reflex/components/radix/primitives/form.pyi +257 -364
  94. reflex/components/radix/primitives/progress.py +1 -1
  95. reflex/components/radix/primitives/progress.pyi +231 -282
  96. reflex/components/radix/primitives/slider.py +1 -1
  97. reflex/components/radix/primitives/slider.pyi +87 -138
  98. reflex/components/radix/themes/base.py +3 -24
  99. reflex/components/radix/themes/base.pyi +178 -250
  100. reflex/components/radix/themes/color_mode.py +5 -5
  101. reflex/components/radix/themes/color_mode.pyi +187 -220
  102. reflex/components/radix/themes/components/alert_dialog.py +1 -1
  103. reflex/components/radix/themes/components/alert_dialog.pyi +136 -207
  104. reflex/components/radix/themes/components/aspect_ratio.py +1 -1
  105. reflex/components/radix/themes/components/aspect_ratio.pyi +17 -28
  106. reflex/components/radix/themes/components/avatar.py +1 -1
  107. reflex/components/radix/themes/components/avatar.pyi +70 -81
  108. reflex/components/radix/themes/components/badge.py +1 -1
  109. reflex/components/radix/themes/components/badge.pyi +88 -99
  110. reflex/components/radix/themes/components/button.py +1 -1
  111. reflex/components/radix/themes/components/button.pyi +98 -109
  112. reflex/components/radix/themes/components/callout.py +1 -1
  113. reflex/components/radix/themes/components/callout.pyi +322 -373
  114. reflex/components/radix/themes/components/card.py +1 -1
  115. reflex/components/radix/themes/components/card.pyi +38 -49
  116. reflex/components/radix/themes/components/checkbox.py +1 -2
  117. reflex/components/radix/themes/components/checkbox.pyi +208 -245
  118. reflex/components/radix/themes/components/checkbox_cards.py +1 -1
  119. reflex/components/radix/themes/components/checkbox_cards.pyi +94 -115
  120. reflex/components/radix/themes/components/checkbox_group.py +1 -1
  121. reflex/components/radix/themes/components/checkbox_group.pyi +86 -107
  122. reflex/components/radix/themes/components/context_menu.py +1 -1
  123. reflex/components/radix/themes/components/context_menu.pyi +238 -319
  124. reflex/components/radix/themes/components/data_list.py +1 -1
  125. reflex/components/radix/themes/components/data_list.pyi +130 -171
  126. reflex/components/radix/themes/components/dialog.py +1 -1
  127. reflex/components/radix/themes/components/dialog.pyi +139 -210
  128. reflex/components/radix/themes/components/dropdown_menu.py +1 -1
  129. reflex/components/radix/themes/components/dropdown_menu.pyi +249 -332
  130. reflex/components/radix/themes/components/hover_card.py +1 -1
  131. reflex/components/radix/themes/components/hover_card.pyi +90 -131
  132. reflex/components/radix/themes/components/icon_button.py +2 -3
  133. reflex/components/radix/themes/components/icon_button.pyi +98 -109
  134. reflex/components/radix/themes/components/inset.py +1 -1
  135. reflex/components/radix/themes/components/inset.pyi +47 -58
  136. reflex/components/radix/themes/components/popover.py +1 -1
  137. reflex/components/radix/themes/components/popover.pyi +95 -136
  138. reflex/components/radix/themes/components/progress.py +1 -1
  139. reflex/components/radix/themes/components/progress.pyi +71 -82
  140. reflex/components/radix/themes/components/radio.py +1 -1
  141. reflex/components/radix/themes/components/radio.pyi +69 -80
  142. reflex/components/radix/themes/components/radio_cards.py +1 -1
  143. reflex/components/radix/themes/components/radio_cards.pyi +98 -119
  144. reflex/components/radix/themes/components/radio_group.py +8 -11
  145. reflex/components/radix/themes/components/radio_group.pyi +228 -271
  146. reflex/components/radix/themes/components/scroll_area.py +1 -1
  147. reflex/components/radix/themes/components/scroll_area.pyi +21 -32
  148. reflex/components/radix/themes/components/segmented_control.py +1 -1
  149. reflex/components/radix/themes/components/segmented_control.pyi +90 -113
  150. reflex/components/radix/themes/components/select.py +2 -3
  151. reflex/components/radix/themes/components/select.pyi +374 -471
  152. reflex/components/radix/themes/components/separator.py +1 -2
  153. reflex/components/radix/themes/components/separator.pyi +69 -80
  154. reflex/components/radix/themes/components/skeleton.py +1 -1
  155. reflex/components/radix/themes/components/skeleton.pyi +23 -34
  156. reflex/components/radix/themes/components/slider.py +2 -3
  157. reflex/components/radix/themes/components/slider.pyi +75 -88
  158. reflex/components/radix/themes/components/spinner.py +1 -1
  159. reflex/components/radix/themes/components/spinner.pyi +19 -30
  160. reflex/components/radix/themes/components/switch.py +1 -1
  161. reflex/components/radix/themes/components/switch.pyi +71 -84
  162. reflex/components/radix/themes/components/table.py +1 -1
  163. reflex/components/radix/themes/components/table.pyi +261 -332
  164. reflex/components/radix/themes/components/tabs.py +1 -1
  165. reflex/components/radix/themes/components/tabs.pyi +139 -194
  166. reflex/components/radix/themes/components/text_area.py +1 -1
  167. reflex/components/radix/themes/components/text_area.pyi +96 -111
  168. reflex/components/radix/themes/components/text_field.py +1 -1
  169. reflex/components/radix/themes/components/text_field.pyi +247 -286
  170. reflex/components/radix/themes/components/tooltip.py +1 -1
  171. reflex/components/radix/themes/components/tooltip.pyi +26 -37
  172. reflex/components/radix/themes/layout/__init__.pyi +1 -0
  173. reflex/components/radix/themes/layout/base.py +1 -1
  174. reflex/components/radix/themes/layout/base.pyi +56 -67
  175. reflex/components/radix/themes/layout/box.pyi +34 -45
  176. reflex/components/radix/themes/layout/center.pyi +56 -67
  177. reflex/components/radix/themes/layout/container.py +1 -2
  178. reflex/components/radix/themes/layout/container.pyi +36 -47
  179. reflex/components/radix/themes/layout/flex.py +1 -1
  180. reflex/components/radix/themes/layout/flex.pyi +56 -67
  181. reflex/components/radix/themes/layout/grid.py +1 -1
  182. reflex/components/radix/themes/layout/grid.pyi +64 -75
  183. reflex/components/radix/themes/layout/list.py +5 -6
  184. reflex/components/radix/themes/layout/list.pyi +193 -244
  185. reflex/components/radix/themes/layout/section.py +1 -2
  186. reflex/components/radix/themes/layout/section.pyi +36 -47
  187. reflex/components/radix/themes/layout/spacer.pyi +56 -67
  188. reflex/components/radix/themes/layout/stack.py +1 -1
  189. reflex/components/radix/themes/layout/stack.pyi +128 -159
  190. reflex/components/radix/themes/typography/blockquote.py +1 -1
  191. reflex/components/radix/themes/typography/blockquote.pyi +89 -100
  192. reflex/components/radix/themes/typography/code.py +1 -1
  193. reflex/components/radix/themes/typography/code.pyi +90 -101
  194. reflex/components/radix/themes/typography/heading.py +1 -1
  195. reflex/components/radix/themes/typography/heading.pyi +96 -107
  196. reflex/components/radix/themes/typography/link.py +1 -1
  197. reflex/components/radix/themes/typography/link.pyi +102 -113
  198. reflex/components/radix/themes/typography/text.py +1 -1
  199. reflex/components/radix/themes/typography/text.pyi +501 -572
  200. reflex/components/react_player/audio.pyi +33 -60
  201. reflex/components/react_player/react_player.py +1 -1
  202. reflex/components/react_player/react_player.pyi +33 -60
  203. reflex/components/react_player/video.pyi +33 -60
  204. reflex/components/recharts/cartesian.py +2 -3
  205. reflex/components/recharts/cartesian.pyi +678 -861
  206. reflex/components/recharts/charts.py +4 -5
  207. reflex/components/recharts/charts.pyi +252 -357
  208. reflex/components/recharts/general.py +1 -2
  209. reflex/components/recharts/general.pyi +180 -231
  210. reflex/components/recharts/polar.py +4 -5
  211. reflex/components/recharts/polar.pyi +144 -181
  212. reflex/components/recharts/recharts.pyi +33 -53
  213. reflex/components/sonner/toast.py +16 -17
  214. reflex/components/sonner/toast.pyi +36 -47
  215. reflex/components/suneditor/editor.py +2 -3
  216. reflex/components/suneditor/editor.pyi +55 -78
  217. reflex/components/tags/cond_tag.py +6 -4
  218. reflex/components/tags/iter_tag.py +28 -16
  219. reflex/components/tags/match_tag.py +6 -4
  220. reflex/components/tags/tag.py +40 -23
  221. reflex/custom_components/custom_components.py +3 -1
  222. reflex/event.py +115 -67
  223. reflex/experimental/client_state.py +18 -18
  224. reflex/experimental/hooks.py +16 -16
  225. reflex/experimental/layout.py +5 -5
  226. reflex/experimental/layout.pyi +136 -187
  227. reflex/middleware/hydrate_middleware.py +2 -0
  228. reflex/middleware/middleware.py +3 -3
  229. reflex/state.py +149 -82
  230. reflex/style.py +21 -22
  231. reflex/utils/exceptions.py +20 -0
  232. reflex/utils/format.py +54 -34
  233. reflex/utils/imports.py +16 -73
  234. reflex/utils/prerequisites.py +15 -8
  235. reflex/utils/pyi_generator.py +13 -8
  236. reflex/utils/serializers.py +12 -22
  237. reflex/utils/telemetry.py +3 -2
  238. reflex/utils/types.py +11 -6
  239. reflex/{ivars → vars}/__init__.py +6 -2
  240. reflex/{ivars → vars}/base.py +599 -216
  241. reflex/{ivars → vars}/function.py +15 -19
  242. reflex/{ivars → vars}/number.py +41 -20
  243. reflex/{ivars → vars}/object.py +28 -30
  244. reflex/{ivars → vars}/sequence.py +53 -42
  245. {reflex-0.6.0a1.dist-info → reflex-0.6.0a3.dist-info}/METADATA +4 -6
  246. reflex-0.6.0a3.dist-info/RECORD +382 -0
  247. reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +0 -36
  248. reflex/vars.py +0 -501
  249. reflex-0.6.0a1.dist-info/RECORD +0 -384
  250. {reflex-0.6.0a1.dist-info → reflex-0.6.0a3.dist-info}/LICENSE +0 -0
  251. {reflex-0.6.0a1.dist-info → reflex-0.6.0a3.dist-info}/WHEEL +0 -0
  252. {reflex-0.6.0a1.dist-info → reflex-0.6.0a3.dist-info}/entry_points.txt +0 -0
@@ -6,11 +6,10 @@ from typing import Any, Dict, List, Union
6
6
 
7
7
  from reflex.components.component import Component
8
8
  from reflex.components.tags import Tag
9
- from reflex.ivars.base import ImmutableVar, LiteralVar, is_computed_var
10
9
  from reflex.utils import types
11
10
  from reflex.utils.imports import ImportDict
12
11
  from reflex.utils.serializers import serialize
13
- from reflex.vars import Var
12
+ from reflex.vars.base import LiteralVar, Var, is_computed_var
14
13
 
15
14
 
16
15
  class Gridjs(Component):
@@ -83,7 +82,7 @@ class DataTable(Gridjs):
83
82
  # If data is a pandas dataframe and columns are provided throw an error.
84
83
  if (
85
84
  types.is_dataframe(type(data))
86
- or (isinstance(data, ImmutableVar) and types.is_dataframe(data._var_type))
85
+ or (isinstance(data, Var) and types.is_dataframe(data._var_type))
87
86
  ) and columns is not None:
88
87
  raise ValueError(
89
88
  "Cannot pass in both a pandas dataframe and columns to the data_table component."
@@ -91,7 +90,7 @@ class DataTable(Gridjs):
91
90
 
92
91
  # If data is a list and columns are not provided, throw an error
93
92
  if (
94
- (isinstance(data, ImmutableVar) and types._issubclass(data._var_type, List))
93
+ (isinstance(data, Var) and types._issubclass(data._var_type, List))
95
94
  or issubclass(type(data), List)
96
95
  ) and columns is None:
97
96
  raise ValueError(
@@ -113,15 +112,13 @@ class DataTable(Gridjs):
113
112
  return {"": "gridjs/dist/theme/mermaid.css"}
114
113
 
115
114
  def _render(self) -> Tag:
116
- if isinstance(self.data, ImmutableVar) and types.is_dataframe(
117
- self.data._var_type
118
- ):
115
+ if isinstance(self.data, Var) and types.is_dataframe(self.data._var_type):
119
116
  self.columns = self.data._replace(
120
- _var_name=f"{self.data._var_name}.columns",
117
+ _js_expr=f"{self.data._js_expr}.columns",
121
118
  _var_type=List[Any],
122
119
  )
123
120
  self.data = self.data._replace(
124
- _var_name=f"{self.data._var_name}.data",
121
+ _js_expr=f"{self.data._js_expr}.data",
125
122
  _var_type=List[List[Any]],
126
123
  )
127
124
  if types.is_dataframe(type(self.data)):
@@ -7,10 +7,9 @@ from typing import Any, Callable, Dict, List, Optional, Union, overload
7
7
 
8
8
  from reflex.components.component import Component
9
9
  from reflex.event import EventHandler, EventSpec
10
- from reflex.ivars.base import ImmutableVar
11
10
  from reflex.style import Style
12
11
  from reflex.utils.imports import ImportDict
13
- from reflex.vars import Var
12
+ from reflex.vars.base import Var
14
13
 
15
14
  class Gridjs(Component):
16
15
  @overload
@@ -23,51 +22,41 @@ class Gridjs(Component):
23
22
  id: Optional[Any] = None,
24
23
  class_name: Optional[Any] = None,
25
24
  autofocus: Optional[bool] = None,
26
- custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
27
- on_blur: Optional[
28
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
29
- ] = None,
30
- on_click: Optional[
31
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
32
- ] = None,
25
+ custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
26
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
27
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
33
28
  on_context_menu: Optional[
34
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
29
+ Union[EventHandler, EventSpec, list, Callable, Var]
35
30
  ] = None,
36
31
  on_double_click: Optional[
37
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
38
- ] = None,
39
- on_focus: Optional[
40
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
41
- ] = None,
42
- on_mount: Optional[
43
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
32
+ Union[EventHandler, EventSpec, list, Callable, Var]
44
33
  ] = None,
34
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
35
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
45
36
  on_mouse_down: Optional[
46
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
37
+ Union[EventHandler, EventSpec, list, Callable, Var]
47
38
  ] = None,
48
39
  on_mouse_enter: Optional[
49
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
40
+ Union[EventHandler, EventSpec, list, Callable, Var]
50
41
  ] = None,
51
42
  on_mouse_leave: Optional[
52
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
43
+ Union[EventHandler, EventSpec, list, Callable, Var]
53
44
  ] = None,
54
45
  on_mouse_move: Optional[
55
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
46
+ Union[EventHandler, EventSpec, list, Callable, Var]
56
47
  ] = None,
57
48
  on_mouse_out: Optional[
58
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
49
+ Union[EventHandler, EventSpec, list, Callable, Var]
59
50
  ] = None,
60
51
  on_mouse_over: Optional[
61
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
52
+ Union[EventHandler, EventSpec, list, Callable, Var]
62
53
  ] = None,
63
54
  on_mouse_up: Optional[
64
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
65
- ] = None,
66
- on_scroll: Optional[
67
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
55
+ Union[EventHandler, EventSpec, list, Callable, Var]
68
56
  ] = None,
57
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
69
58
  on_unmount: Optional[
70
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
59
+ Union[EventHandler, EventSpec, list, Callable, Var]
71
60
  ] = None,
72
61
  **props,
73
62
  ) -> "Gridjs":
@@ -95,61 +84,51 @@ class DataTable(Gridjs):
95
84
  cls,
96
85
  *children,
97
86
  data: Optional[Any] = None,
98
- columns: Optional[Union[Var[List], List]] = None,
87
+ columns: Optional[Union[List, Var[List]]] = None,
99
88
  search: Optional[Union[Var[bool], bool]] = None,
100
89
  sort: Optional[Union[Var[bool], bool]] = None,
101
90
  resizable: Optional[Union[Var[bool], bool]] = None,
102
- pagination: Optional[Union[Var[Union[Dict, bool]], bool, Dict]] = None,
91
+ pagination: Optional[Union[Dict, Var[Union[Dict, bool]], bool]] = None,
103
92
  style: Optional[Style] = None,
104
93
  key: Optional[Any] = None,
105
94
  id: Optional[Any] = None,
106
95
  class_name: Optional[Any] = None,
107
96
  autofocus: Optional[bool] = None,
108
- custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
109
- on_blur: Optional[
110
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
111
- ] = None,
112
- on_click: Optional[
113
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
114
- ] = None,
97
+ custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
98
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
99
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
115
100
  on_context_menu: Optional[
116
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
101
+ Union[EventHandler, EventSpec, list, Callable, Var]
117
102
  ] = None,
118
103
  on_double_click: Optional[
119
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
120
- ] = None,
121
- on_focus: Optional[
122
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
123
- ] = None,
124
- on_mount: Optional[
125
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
104
+ Union[EventHandler, EventSpec, list, Callable, Var]
126
105
  ] = None,
106
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
107
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
127
108
  on_mouse_down: Optional[
128
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
109
+ Union[EventHandler, EventSpec, list, Callable, Var]
129
110
  ] = None,
130
111
  on_mouse_enter: Optional[
131
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
112
+ Union[EventHandler, EventSpec, list, Callable, Var]
132
113
  ] = None,
133
114
  on_mouse_leave: Optional[
134
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
115
+ Union[EventHandler, EventSpec, list, Callable, Var]
135
116
  ] = None,
136
117
  on_mouse_move: Optional[
137
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
118
+ Union[EventHandler, EventSpec, list, Callable, Var]
138
119
  ] = None,
139
120
  on_mouse_out: Optional[
140
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
121
+ Union[EventHandler, EventSpec, list, Callable, Var]
141
122
  ] = None,
142
123
  on_mouse_over: Optional[
143
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
124
+ Union[EventHandler, EventSpec, list, Callable, Var]
144
125
  ] = None,
145
126
  on_mouse_up: Optional[
146
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
147
- ] = None,
148
- on_scroll: Optional[
149
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
127
+ Union[EventHandler, EventSpec, list, Callable, Var]
150
128
  ] = None,
129
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
151
130
  on_unmount: Optional[
152
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
131
+ Union[EventHandler, EventSpec, list, Callable, Var]
153
132
  ] = None,
154
133
  **props,
155
134
  ) -> "DataTable":
@@ -2,7 +2,7 @@
2
2
 
3
3
  from reflex.components.component import Component
4
4
  from reflex.utils import format
5
- from reflex.vars import Var
5
+ from reflex.vars.base import Var
6
6
 
7
7
 
8
8
  class LucideIconComponent(Component):
@@ -7,9 +7,8 @@ from typing import Any, Callable, Dict, Optional, Union, overload
7
7
 
8
8
  from reflex.components.component import Component
9
9
  from reflex.event import EventHandler, EventSpec
10
- from reflex.ivars.base import ImmutableVar
11
10
  from reflex.style import Style
12
- from reflex.vars import Var
11
+ from reflex.vars.base import Var
13
12
 
14
13
  class LucideIconComponent(Component):
15
14
  @overload
@@ -22,51 +21,41 @@ class LucideIconComponent(Component):
22
21
  id: Optional[Any] = None,
23
22
  class_name: Optional[Any] = None,
24
23
  autofocus: Optional[bool] = None,
25
- custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
26
- on_blur: Optional[
27
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
28
- ] = None,
29
- on_click: Optional[
30
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
31
- ] = None,
24
+ custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
25
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
26
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
32
27
  on_context_menu: Optional[
33
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
28
+ Union[EventHandler, EventSpec, list, Callable, Var]
34
29
  ] = None,
35
30
  on_double_click: Optional[
36
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
37
- ] = None,
38
- on_focus: Optional[
39
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
40
- ] = None,
41
- on_mount: Optional[
42
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
31
+ Union[EventHandler, EventSpec, list, Callable, Var]
43
32
  ] = None,
33
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
34
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
44
35
  on_mouse_down: Optional[
45
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
36
+ Union[EventHandler, EventSpec, list, Callable, Var]
46
37
  ] = None,
47
38
  on_mouse_enter: Optional[
48
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
39
+ Union[EventHandler, EventSpec, list, Callable, Var]
49
40
  ] = None,
50
41
  on_mouse_leave: Optional[
51
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
42
+ Union[EventHandler, EventSpec, list, Callable, Var]
52
43
  ] = None,
53
44
  on_mouse_move: Optional[
54
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
45
+ Union[EventHandler, EventSpec, list, Callable, Var]
55
46
  ] = None,
56
47
  on_mouse_out: Optional[
57
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
48
+ Union[EventHandler, EventSpec, list, Callable, Var]
58
49
  ] = None,
59
50
  on_mouse_over: Optional[
60
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
51
+ Union[EventHandler, EventSpec, list, Callable, Var]
61
52
  ] = None,
62
53
  on_mouse_up: Optional[
63
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
64
- ] = None,
65
- on_scroll: Optional[
66
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
54
+ Union[EventHandler, EventSpec, list, Callable, Var]
67
55
  ] = None,
56
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
68
57
  on_unmount: Optional[
69
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
58
+ Union[EventHandler, EventSpec, list, Callable, Var]
70
59
  ] = None,
71
60
  **props,
72
61
  ) -> "LucideIconComponent":
@@ -99,51 +88,41 @@ class Icon(LucideIconComponent):
99
88
  id: Optional[Any] = None,
100
89
  class_name: Optional[Any] = None,
101
90
  autofocus: Optional[bool] = None,
102
- custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
103
- on_blur: Optional[
104
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
105
- ] = None,
106
- on_click: Optional[
107
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
108
- ] = None,
91
+ custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
92
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
93
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
109
94
  on_context_menu: Optional[
110
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
95
+ Union[EventHandler, EventSpec, list, Callable, Var]
111
96
  ] = None,
112
97
  on_double_click: Optional[
113
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
114
- ] = None,
115
- on_focus: Optional[
116
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
117
- ] = None,
118
- on_mount: Optional[
119
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
98
+ Union[EventHandler, EventSpec, list, Callable, Var]
120
99
  ] = None,
100
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
101
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
121
102
  on_mouse_down: Optional[
122
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
103
+ Union[EventHandler, EventSpec, list, Callable, Var]
123
104
  ] = None,
124
105
  on_mouse_enter: Optional[
125
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
106
+ Union[EventHandler, EventSpec, list, Callable, Var]
126
107
  ] = None,
127
108
  on_mouse_leave: Optional[
128
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
109
+ Union[EventHandler, EventSpec, list, Callable, Var]
129
110
  ] = None,
130
111
  on_mouse_move: Optional[
131
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
112
+ Union[EventHandler, EventSpec, list, Callable, Var]
132
113
  ] = None,
133
114
  on_mouse_out: Optional[
134
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
115
+ Union[EventHandler, EventSpec, list, Callable, Var]
135
116
  ] = None,
136
117
  on_mouse_over: Optional[
137
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
118
+ Union[EventHandler, EventSpec, list, Callable, Var]
138
119
  ] = None,
139
120
  on_mouse_up: Optional[
140
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
141
- ] = None,
142
- on_scroll: Optional[
143
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
121
+ Union[EventHandler, EventSpec, list, Callable, Var]
144
122
  ] = None,
123
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
145
124
  on_unmount: Optional[
146
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
125
+ Union[EventHandler, EventSpec, list, Callable, Var]
147
126
  ] = None,
148
127
  **props,
149
128
  ) -> "Icon":
@@ -17,25 +17,25 @@ from reflex.components.radix.themes.typography.heading import Heading
17
17
  from reflex.components.radix.themes.typography.link import Link
18
18
  from reflex.components.radix.themes.typography.text import Text
19
19
  from reflex.components.tags.tag import Tag
20
- from reflex.ivars.base import ImmutableVar, LiteralVar
21
20
  from reflex.utils import types
22
21
  from reflex.utils.imports import ImportDict, ImportVar
22
+ from reflex.vars.base import LiteralVar, Var
23
23
 
24
24
  # Special vars used in the component map.
25
- _CHILDREN = ImmutableVar.create_safe("children")
26
- _PROPS = ImmutableVar.create_safe("...props")
27
- _PROPS_IN_TAG = ImmutableVar.create_safe("{...props}")
28
- _MOCK_ARG = ImmutableVar.create_safe("")
25
+ _CHILDREN = Var(_js_expr="children", _var_type=str)
26
+ _PROPS = Var(_js_expr="...props")
27
+ _PROPS_IN_TAG = Var(_js_expr="{...props}")
28
+ _MOCK_ARG = Var(_js_expr="", _var_type=str)
29
29
 
30
30
  # Special remark plugins.
31
- _REMARK_MATH = ImmutableVar.create_safe("remarkMath")
32
- _REMARK_GFM = ImmutableVar.create_safe("remarkGfm")
33
- _REMARK_UNWRAP_IMAGES = ImmutableVar.create_safe("remarkUnwrapImages")
31
+ _REMARK_MATH = Var(_js_expr="remarkMath")
32
+ _REMARK_GFM = Var(_js_expr="remarkGfm")
33
+ _REMARK_UNWRAP_IMAGES = Var(_js_expr="remarkUnwrapImages")
34
34
  _REMARK_PLUGINS = LiteralVar.create([_REMARK_MATH, _REMARK_GFM, _REMARK_UNWRAP_IMAGES])
35
35
 
36
36
  # Special rehype plugins.
37
- _REHYPE_KATEX = ImmutableVar.create_safe("rehypeKatex")
38
- _REHYPE_RAW = ImmutableVar.create_safe("rehypeRaw")
37
+ _REHYPE_KATEX = Var(_js_expr="rehypeKatex")
38
+ _REHYPE_RAW = Var(_js_expr="rehypeRaw")
39
39
  _REHYPE_PLUGINS = LiteralVar.create([_REHYPE_KATEX, _REHYPE_RAW])
40
40
 
41
41
  # These tags do NOT get props passed to them
@@ -99,8 +99,7 @@ class Markdown(Component):
99
99
  The markdown component.
100
100
  """
101
101
  assert (
102
- len(children) == 1
103
- and types._isinstance(children[0], Union[str, ImmutableVar])
102
+ len(children) == 1 and types._isinstance(children[0], Union[str, Var])
104
103
  ), "Markdown component must have exactly one child containing the markdown source."
105
104
 
106
105
  # Update the base component map with the custom component map.
@@ -155,19 +154,19 @@ class Markdown(Component):
155
154
  {
156
155
  "": "katex/dist/katex.min.css",
157
156
  "remark-math@5.1.1": ImportVar(
158
- tag=_REMARK_MATH._var_name, is_default=True
157
+ tag=_REMARK_MATH._js_expr, is_default=True
159
158
  ),
160
159
  "remark-gfm@3.0.1": ImportVar(
161
- tag=_REMARK_GFM._var_name, is_default=True
160
+ tag=_REMARK_GFM._js_expr, is_default=True
162
161
  ),
163
162
  "remark-unwrap-images@4.0.0": ImportVar(
164
- tag=_REMARK_UNWRAP_IMAGES._var_name, is_default=True
163
+ tag=_REMARK_UNWRAP_IMAGES._js_expr, is_default=True
165
164
  ),
166
165
  "rehype-katex@6.0.3": ImportVar(
167
- tag=_REHYPE_KATEX._var_name, is_default=True
166
+ tag=_REHYPE_KATEX._js_expr, is_default=True
168
167
  ),
169
168
  "rehype-raw@6.1.1": ImportVar(
170
- tag=_REHYPE_RAW._var_name, is_default=True
169
+ tag=_REHYPE_RAW._js_expr, is_default=True
171
170
  ),
172
171
  },
173
172
  *[
@@ -195,19 +194,17 @@ class Markdown(Component):
195
194
  if tag not in self.component_map:
196
195
  raise ValueError(f"No markdown component found for tag: {tag}.")
197
196
 
198
- special_props = {_PROPS_IN_TAG}
197
+ special_props = [_PROPS_IN_TAG]
199
198
  children = [_CHILDREN]
200
199
 
201
200
  # For certain tags, the props from the markdown renderer are not actually valid for the component.
202
201
  if tag in NO_PROPS_TAGS:
203
- special_props = set()
202
+ special_props = []
204
203
 
205
204
  # If the children are set as a prop, don't pass them as children.
206
205
  children_prop = props.pop("children", None)
207
206
  if children_prop is not None:
208
- special_props.add(
209
- ImmutableVar.create_safe(f"children={{{str(children_prop)}}}")
210
- )
207
+ special_props.append(Var(_js_expr=f"children={{{str(children_prop)}}}"))
211
208
  children = []
212
209
  # Get the component.
213
210
  component = self.component_map[tag](*children, **props).set(
@@ -227,22 +224,22 @@ class Markdown(Component):
227
224
  """
228
225
  return str(self.get_component(tag, **props)).replace("\n", "")
229
226
 
230
- def format_component_map(self) -> dict[str, ImmutableVar]:
227
+ def format_component_map(self) -> dict[str, Var]:
231
228
  """Format the component map for rendering.
232
229
 
233
230
  Returns:
234
231
  The formatted component map.
235
232
  """
236
233
  components = {
237
- tag: ImmutableVar.create_safe(
238
- f"(({{node, {_CHILDREN._var_name}, {_PROPS._var_name}}}) => ({self.format_component(tag)}))"
234
+ tag: Var(
235
+ _js_expr=f"(({{node, {_CHILDREN._js_expr}, {_PROPS._js_expr}}}) => ({self.format_component(tag)}))"
239
236
  )
240
237
  for tag in self.component_map
241
238
  }
242
239
 
243
240
  # Separate out inline code and code blocks.
244
- components["code"] = ImmutableVar.create_safe(
245
- f"""(({{node, inline, className, {_CHILDREN._var_name}, {_PROPS._var_name}}}) => {{
241
+ components["code"] = Var(
242
+ _js_expr=f"""(({{node, inline, className, {_CHILDREN._js_expr}, {_PROPS._js_expr}}}) => {{
246
243
  const match = (className || '').match(/language-(?<lang>.*)/);
247
244
  const language = match ? match[1] : '';
248
245
  if (language) {{
@@ -258,7 +255,7 @@ class Markdown(Component):
258
255
  return inline ? (
259
256
  {self.format_component("code")}
260
257
  ) : (
261
- {self.format_component("codeblock", language=ImmutableVar.create_safe("language"))}
258
+ {self.format_component("codeblock", language=Var(_js_expr="language", _var_type=str))}
262
259
  );
263
260
  }})""".replace("\n", " ")
264
261
  )
@@ -298,9 +295,7 @@ class Markdown(Component):
298
295
  .add_props(
299
296
  remark_plugins=_REMARK_PLUGINS,
300
297
  rehype_plugins=_REHYPE_PLUGINS,
301
- components=ImmutableVar.create_safe(
302
- f"{self._get_component_map_name()}()"
303
- ),
298
+ components=Var(_js_expr=f"{self._get_component_map_name()}()"),
304
299
  )
305
300
  .remove_props("componentMap", "componentMapHash")
306
301
  )
@@ -8,20 +8,20 @@ from typing import Any, Callable, Dict, Optional, Union, overload
8
8
 
9
9
  from reflex.components.component import Component
10
10
  from reflex.event import EventHandler, EventSpec
11
- from reflex.ivars.base import ImmutableVar, LiteralVar
12
11
  from reflex.style import Style
13
12
  from reflex.utils.imports import ImportDict
13
+ from reflex.vars.base import LiteralVar, Var
14
14
 
15
- _CHILDREN = ImmutableVar.create_safe("children")
16
- _PROPS = ImmutableVar.create_safe("...props")
17
- _PROPS_IN_TAG = ImmutableVar.create_safe("{...props}")
18
- _MOCK_ARG = ImmutableVar.create_safe("")
19
- _REMARK_MATH = ImmutableVar.create_safe("remarkMath")
20
- _REMARK_GFM = ImmutableVar.create_safe("remarkGfm")
21
- _REMARK_UNWRAP_IMAGES = ImmutableVar.create_safe("remarkUnwrapImages")
15
+ _CHILDREN = Var(_js_expr="children", _var_type=str)
16
+ _PROPS = Var(_js_expr="...props")
17
+ _PROPS_IN_TAG = Var(_js_expr="{...props}")
18
+ _MOCK_ARG = Var(_js_expr="", _var_type=str)
19
+ _REMARK_MATH = Var(_js_expr="remarkMath")
20
+ _REMARK_GFM = Var(_js_expr="remarkGfm")
21
+ _REMARK_UNWRAP_IMAGES = Var(_js_expr="remarkUnwrapImages")
22
22
  _REMARK_PLUGINS = LiteralVar.create([_REMARK_MATH, _REMARK_GFM, _REMARK_UNWRAP_IMAGES])
23
- _REHYPE_KATEX = ImmutableVar.create_safe("rehypeKatex")
24
- _REHYPE_RAW = ImmutableVar.create_safe("rehypeRaw")
23
+ _REHYPE_KATEX = Var(_js_expr="rehypeKatex")
24
+ _REHYPE_RAW = Var(_js_expr="rehypeRaw")
25
25
  _REHYPE_PLUGINS = LiteralVar.create([_REHYPE_KATEX, _REHYPE_RAW])
26
26
  NO_PROPS_TAGS = ("ul", "ol", "li")
27
27
 
@@ -41,51 +41,41 @@ class Markdown(Component):
41
41
  id: Optional[Any] = None,
42
42
  class_name: Optional[Any] = None,
43
43
  autofocus: Optional[bool] = None,
44
- custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
45
- on_blur: Optional[
46
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
47
- ] = None,
48
- on_click: Optional[
49
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
50
- ] = None,
44
+ custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
45
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
46
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
51
47
  on_context_menu: Optional[
52
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
48
+ Union[EventHandler, EventSpec, list, Callable, Var]
53
49
  ] = None,
54
50
  on_double_click: Optional[
55
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
56
- ] = None,
57
- on_focus: Optional[
58
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
59
- ] = None,
60
- on_mount: Optional[
61
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
51
+ Union[EventHandler, EventSpec, list, Callable, Var]
62
52
  ] = None,
53
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
54
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
63
55
  on_mouse_down: Optional[
64
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
56
+ Union[EventHandler, EventSpec, list, Callable, Var]
65
57
  ] = None,
66
58
  on_mouse_enter: Optional[
67
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
59
+ Union[EventHandler, EventSpec, list, Callable, Var]
68
60
  ] = None,
69
61
  on_mouse_leave: Optional[
70
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
62
+ Union[EventHandler, EventSpec, list, Callable, Var]
71
63
  ] = None,
72
64
  on_mouse_move: Optional[
73
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
65
+ Union[EventHandler, EventSpec, list, Callable, Var]
74
66
  ] = None,
75
67
  on_mouse_out: Optional[
76
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
68
+ Union[EventHandler, EventSpec, list, Callable, Var]
77
69
  ] = None,
78
70
  on_mouse_over: Optional[
79
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
71
+ Union[EventHandler, EventSpec, list, Callable, Var]
80
72
  ] = None,
81
73
  on_mouse_up: Optional[
82
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
83
- ] = None,
84
- on_scroll: Optional[
85
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
74
+ Union[EventHandler, EventSpec, list, Callable, Var]
86
75
  ] = None,
76
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
87
77
  on_unmount: Optional[
88
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
78
+ Union[EventHandler, EventSpec, list, Callable, Var]
89
79
  ] = None,
90
80
  **props,
91
81
  ) -> "Markdown":
@@ -111,4 +101,4 @@ class Markdown(Component):
111
101
  def add_imports(self) -> ImportDict | list[ImportDict]: ...
112
102
  def get_component(self, tag: str, **props) -> Component: ...
113
103
  def format_component(self, tag: str, **props) -> str: ...
114
- def format_component_map(self) -> dict[str, ImmutableVar]: ...
104
+ def format_component_map(self) -> dict[str, Var]: ...
@@ -1,26 +1,27 @@
1
1
  """Moment component for humanized date rendering."""
2
2
 
3
+ import dataclasses
3
4
  from typing import List, Optional
4
5
 
5
- from reflex.base import Base
6
6
  from reflex.components.component import Component, NoSSRComponent
7
7
  from reflex.event import EventHandler
8
8
  from reflex.utils.imports import ImportDict
9
- from reflex.vars import Var
9
+ from reflex.vars.base import Var
10
10
 
11
11
 
12
- class MomentDelta(Base):
12
+ @dataclasses.dataclass(frozen=True)
13
+ class MomentDelta:
13
14
  """A delta used for add/subtract prop in Moment."""
14
15
 
15
- years: Optional[int]
16
- quarters: Optional[int]
17
- months: Optional[int]
18
- weeks: Optional[int]
19
- days: Optional[int]
20
- hours: Optional[int]
21
- minutess: Optional[int]
22
- seconds: Optional[int]
23
- milliseconds: Optional[int]
16
+ years: Optional[int] = dataclasses.field(default=None)
17
+ quarters: Optional[int] = dataclasses.field(default=None)
18
+ months: Optional[int] = dataclasses.field(default=None)
19
+ weeks: Optional[int] = dataclasses.field(default=None)
20
+ days: Optional[int] = dataclasses.field(default=None)
21
+ hours: Optional[int] = dataclasses.field(default=None)
22
+ minutess: Optional[int] = dataclasses.field(default=None)
23
+ seconds: Optional[int] = dataclasses.field(default=None)
24
+ milliseconds: Optional[int] = dataclasses.field(default=None)
24
25
 
25
26
 
26
27
  class Moment(NoSSRComponent):