reflex 0.6.0a1__py3-none-any.whl → 0.6.0a2__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 (249) hide show
  1. reflex/.templates/jinja/web/pages/_app.js.jinja2 +1 -1
  2. reflex/.templates/jinja/web/pages/utils.js.jinja2 +2 -2
  3. reflex/__init__.py +8 -2
  4. reflex/__init__.pyi +2 -1
  5. reflex/app.py +4 -2
  6. reflex/base.py +1 -1
  7. reflex/compiler/compiler.py +2 -2
  8. reflex/compiler/utils.py +3 -3
  9. reflex/components/base/app_wrap.py +2 -2
  10. reflex/components/base/app_wrap.pyi +17 -27
  11. reflex/components/base/bare.py +4 -5
  12. reflex/components/base/body.pyi +17 -27
  13. reflex/components/base/document.pyi +81 -131
  14. reflex/components/base/error_boundary.py +6 -7
  15. reflex/components/base/error_boundary.pyi +20 -33
  16. reflex/components/base/fragment.pyi +17 -27
  17. reflex/components/base/head.pyi +33 -53
  18. reflex/components/base/link.py +1 -1
  19. reflex/components/base/link.pyi +33 -54
  20. reflex/components/base/meta.pyi +65 -105
  21. reflex/components/base/script.py +1 -2
  22. reflex/components/base/script.pyi +21 -38
  23. reflex/components/component.py +48 -47
  24. reflex/components/core/banner.py +23 -27
  25. reflex/components/core/banner.pyi +134 -171
  26. reflex/components/core/client_side_routing.py +2 -3
  27. reflex/components/core/client_side_routing.pyi +33 -54
  28. reflex/components/core/clipboard.py +2 -1
  29. reflex/components/core/clipboard.pyi +20 -33
  30. reflex/components/core/cond.py +5 -5
  31. reflex/components/core/debounce.py +5 -5
  32. reflex/components/core/debounce.pyi +20 -33
  33. reflex/components/core/foreach.py +3 -4
  34. reflex/components/core/html.py +1 -1
  35. reflex/components/core/html.pyi +35 -46
  36. reflex/components/core/match.py +17 -17
  37. reflex/components/core/upload.py +17 -23
  38. reflex/components/core/upload.pyi +78 -124
  39. reflex/components/datadisplay/code.py +9 -10
  40. reflex/components/datadisplay/code.pyi +302 -412
  41. reflex/components/datadisplay/dataeditor.py +8 -10
  42. reflex/components/datadisplay/dataeditor.pyi +40 -53
  43. reflex/components/el/element.pyi +17 -27
  44. reflex/components/el/elements/base.py +1 -1
  45. reflex/components/el/elements/base.pyi +34 -45
  46. reflex/components/el/elements/forms.py +16 -16
  47. reflex/components/el/elements/forms.pyi +554 -707
  48. reflex/components/el/elements/inline.py +1 -1
  49. reflex/components/el/elements/inline.pyi +937 -1218
  50. reflex/components/el/elements/media.py +1 -1
  51. reflex/components/el/elements/media.pyi +786 -997
  52. reflex/components/el/elements/metadata.py +3 -6
  53. reflex/components/el/elements/metadata.pyi +181 -242
  54. reflex/components/el/elements/other.py +1 -1
  55. reflex/components/el/elements/other.pyi +235 -306
  56. reflex/components/el/elements/scripts.py +1 -1
  57. reflex/components/el/elements/scripts.pyi +109 -140
  58. reflex/components/el/elements/sectioning.py +0 -2
  59. reflex/components/el/elements/sectioning.pyi +496 -647
  60. reflex/components/el/elements/tables.py +1 -1
  61. reflex/components/el/elements/tables.pyi +351 -452
  62. reflex/components/el/elements/typography.py +1 -1
  63. reflex/components/el/elements/typography.pyi +506 -657
  64. reflex/components/gridjs/datatable.py +6 -9
  65. reflex/components/gridjs/datatable.pyi +35 -56
  66. reflex/components/lucide/icon.py +1 -1
  67. reflex/components/lucide/icon.pyi +33 -54
  68. reflex/components/markdown/markdown.py +26 -31
  69. reflex/components/markdown/markdown.pyi +27 -37
  70. reflex/components/moment/moment.py +13 -12
  71. reflex/components/moment/moment.pyi +23 -35
  72. reflex/components/next/base.pyi +17 -27
  73. reflex/components/next/image.py +1 -1
  74. reflex/components/next/image.pyi +22 -37
  75. reflex/components/next/link.py +1 -1
  76. reflex/components/next/link.pyi +17 -28
  77. reflex/components/next/video.py +1 -1
  78. reflex/components/next/video.pyi +17 -28
  79. reflex/components/plotly/plotly.py +12 -13
  80. reflex/components/plotly/plotly.pyi +39 -54
  81. reflex/components/props.py +1 -1
  82. reflex/components/radix/__init__.pyi +1 -0
  83. reflex/components/radix/primitives/__init__.pyi +1 -0
  84. reflex/components/radix/primitives/accordion.py +4 -4
  85. reflex/components/radix/primitives/accordion.pyi +424 -495
  86. reflex/components/radix/primitives/base.py +1 -1
  87. reflex/components/radix/primitives/base.pyi +33 -54
  88. reflex/components/radix/primitives/drawer.py +1 -1
  89. reflex/components/radix/primitives/drawer.pyi +172 -273
  90. reflex/components/radix/primitives/form.py +1 -1
  91. reflex/components/radix/primitives/form.pyi +257 -364
  92. reflex/components/radix/primitives/progress.py +1 -1
  93. reflex/components/radix/primitives/progress.pyi +231 -282
  94. reflex/components/radix/primitives/slider.py +1 -1
  95. reflex/components/radix/primitives/slider.pyi +87 -138
  96. reflex/components/radix/themes/base.py +3 -24
  97. reflex/components/radix/themes/base.pyi +178 -250
  98. reflex/components/radix/themes/color_mode.py +5 -5
  99. reflex/components/radix/themes/color_mode.pyi +187 -220
  100. reflex/components/radix/themes/components/alert_dialog.py +1 -1
  101. reflex/components/radix/themes/components/alert_dialog.pyi +136 -207
  102. reflex/components/radix/themes/components/aspect_ratio.py +1 -1
  103. reflex/components/radix/themes/components/aspect_ratio.pyi +17 -28
  104. reflex/components/radix/themes/components/avatar.py +1 -1
  105. reflex/components/radix/themes/components/avatar.pyi +70 -81
  106. reflex/components/radix/themes/components/badge.py +1 -1
  107. reflex/components/radix/themes/components/badge.pyi +88 -99
  108. reflex/components/radix/themes/components/button.py +1 -1
  109. reflex/components/radix/themes/components/button.pyi +98 -109
  110. reflex/components/radix/themes/components/callout.py +1 -1
  111. reflex/components/radix/themes/components/callout.pyi +322 -373
  112. reflex/components/radix/themes/components/card.py +1 -1
  113. reflex/components/radix/themes/components/card.pyi +38 -49
  114. reflex/components/radix/themes/components/checkbox.py +1 -2
  115. reflex/components/radix/themes/components/checkbox.pyi +208 -245
  116. reflex/components/radix/themes/components/checkbox_cards.py +1 -1
  117. reflex/components/radix/themes/components/checkbox_cards.pyi +94 -115
  118. reflex/components/radix/themes/components/checkbox_group.py +1 -1
  119. reflex/components/radix/themes/components/checkbox_group.pyi +86 -107
  120. reflex/components/radix/themes/components/context_menu.py +1 -1
  121. reflex/components/radix/themes/components/context_menu.pyi +238 -319
  122. reflex/components/radix/themes/components/data_list.py +1 -1
  123. reflex/components/radix/themes/components/data_list.pyi +130 -171
  124. reflex/components/radix/themes/components/dialog.py +1 -1
  125. reflex/components/radix/themes/components/dialog.pyi +139 -210
  126. reflex/components/radix/themes/components/dropdown_menu.py +1 -1
  127. reflex/components/radix/themes/components/dropdown_menu.pyi +249 -332
  128. reflex/components/radix/themes/components/hover_card.py +1 -1
  129. reflex/components/radix/themes/components/hover_card.pyi +90 -131
  130. reflex/components/radix/themes/components/icon_button.py +2 -3
  131. reflex/components/radix/themes/components/icon_button.pyi +98 -109
  132. reflex/components/radix/themes/components/inset.py +1 -1
  133. reflex/components/radix/themes/components/inset.pyi +47 -58
  134. reflex/components/radix/themes/components/popover.py +1 -1
  135. reflex/components/radix/themes/components/popover.pyi +95 -136
  136. reflex/components/radix/themes/components/progress.py +1 -1
  137. reflex/components/radix/themes/components/progress.pyi +71 -82
  138. reflex/components/radix/themes/components/radio.py +1 -1
  139. reflex/components/radix/themes/components/radio.pyi +69 -80
  140. reflex/components/radix/themes/components/radio_cards.py +1 -1
  141. reflex/components/radix/themes/components/radio_cards.pyi +98 -119
  142. reflex/components/radix/themes/components/radio_group.py +8 -11
  143. reflex/components/radix/themes/components/radio_group.pyi +228 -271
  144. reflex/components/radix/themes/components/scroll_area.py +1 -1
  145. reflex/components/radix/themes/components/scroll_area.pyi +21 -32
  146. reflex/components/radix/themes/components/segmented_control.py +1 -1
  147. reflex/components/radix/themes/components/segmented_control.pyi +90 -113
  148. reflex/components/radix/themes/components/select.py +2 -3
  149. reflex/components/radix/themes/components/select.pyi +374 -471
  150. reflex/components/radix/themes/components/separator.py +1 -2
  151. reflex/components/radix/themes/components/separator.pyi +69 -80
  152. reflex/components/radix/themes/components/skeleton.py +1 -1
  153. reflex/components/radix/themes/components/skeleton.pyi +23 -34
  154. reflex/components/radix/themes/components/slider.py +2 -3
  155. reflex/components/radix/themes/components/slider.pyi +75 -88
  156. reflex/components/radix/themes/components/spinner.py +1 -1
  157. reflex/components/radix/themes/components/spinner.pyi +19 -30
  158. reflex/components/radix/themes/components/switch.py +1 -1
  159. reflex/components/radix/themes/components/switch.pyi +71 -84
  160. reflex/components/radix/themes/components/table.py +1 -1
  161. reflex/components/radix/themes/components/table.pyi +261 -332
  162. reflex/components/radix/themes/components/tabs.py +1 -1
  163. reflex/components/radix/themes/components/tabs.pyi +139 -194
  164. reflex/components/radix/themes/components/text_area.py +1 -1
  165. reflex/components/radix/themes/components/text_area.pyi +96 -111
  166. reflex/components/radix/themes/components/text_field.py +1 -1
  167. reflex/components/radix/themes/components/text_field.pyi +247 -286
  168. reflex/components/radix/themes/components/tooltip.py +1 -1
  169. reflex/components/radix/themes/components/tooltip.pyi +26 -37
  170. reflex/components/radix/themes/layout/__init__.pyi +1 -0
  171. reflex/components/radix/themes/layout/base.py +1 -1
  172. reflex/components/radix/themes/layout/base.pyi +56 -67
  173. reflex/components/radix/themes/layout/box.pyi +34 -45
  174. reflex/components/radix/themes/layout/center.pyi +56 -67
  175. reflex/components/radix/themes/layout/container.py +1 -2
  176. reflex/components/radix/themes/layout/container.pyi +36 -47
  177. reflex/components/radix/themes/layout/flex.py +1 -1
  178. reflex/components/radix/themes/layout/flex.pyi +56 -67
  179. reflex/components/radix/themes/layout/grid.py +1 -1
  180. reflex/components/radix/themes/layout/grid.pyi +64 -75
  181. reflex/components/radix/themes/layout/list.py +5 -6
  182. reflex/components/radix/themes/layout/list.pyi +193 -244
  183. reflex/components/radix/themes/layout/section.py +1 -2
  184. reflex/components/radix/themes/layout/section.pyi +36 -47
  185. reflex/components/radix/themes/layout/spacer.pyi +56 -67
  186. reflex/components/radix/themes/layout/stack.py +1 -1
  187. reflex/components/radix/themes/layout/stack.pyi +128 -159
  188. reflex/components/radix/themes/typography/blockquote.py +1 -1
  189. reflex/components/radix/themes/typography/blockquote.pyi +89 -100
  190. reflex/components/radix/themes/typography/code.py +1 -1
  191. reflex/components/radix/themes/typography/code.pyi +90 -101
  192. reflex/components/radix/themes/typography/heading.py +1 -1
  193. reflex/components/radix/themes/typography/heading.pyi +96 -107
  194. reflex/components/radix/themes/typography/link.py +1 -1
  195. reflex/components/radix/themes/typography/link.pyi +102 -113
  196. reflex/components/radix/themes/typography/text.py +1 -1
  197. reflex/components/radix/themes/typography/text.pyi +501 -572
  198. reflex/components/react_player/audio.pyi +33 -60
  199. reflex/components/react_player/react_player.py +1 -1
  200. reflex/components/react_player/react_player.pyi +33 -60
  201. reflex/components/react_player/video.pyi +33 -60
  202. reflex/components/recharts/cartesian.py +2 -3
  203. reflex/components/recharts/cartesian.pyi +678 -861
  204. reflex/components/recharts/charts.py +4 -5
  205. reflex/components/recharts/charts.pyi +252 -357
  206. reflex/components/recharts/general.py +1 -2
  207. reflex/components/recharts/general.pyi +180 -231
  208. reflex/components/recharts/polar.py +4 -5
  209. reflex/components/recharts/polar.pyi +144 -181
  210. reflex/components/recharts/recharts.pyi +33 -53
  211. reflex/components/sonner/toast.py +16 -17
  212. reflex/components/sonner/toast.pyi +36 -47
  213. reflex/components/suneditor/editor.py +2 -3
  214. reflex/components/suneditor/editor.pyi +55 -78
  215. reflex/components/tags/cond_tag.py +6 -4
  216. reflex/components/tags/iter_tag.py +28 -16
  217. reflex/components/tags/match_tag.py +6 -4
  218. reflex/components/tags/tag.py +40 -23
  219. reflex/event.py +113 -65
  220. reflex/experimental/client_state.py +18 -18
  221. reflex/experimental/hooks.py +16 -16
  222. reflex/experimental/layout.py +5 -5
  223. reflex/experimental/layout.pyi +136 -187
  224. reflex/middleware/hydrate_middleware.py +2 -0
  225. reflex/middleware/middleware.py +3 -3
  226. reflex/state.py +148 -82
  227. reflex/style.py +21 -22
  228. reflex/utils/exceptions.py +16 -0
  229. reflex/utils/format.py +22 -34
  230. reflex/utils/imports.py +16 -73
  231. reflex/utils/prerequisites.py +15 -8
  232. reflex/utils/pyi_generator.py +13 -8
  233. reflex/utils/serializers.py +12 -22
  234. reflex/utils/telemetry.py +2 -1
  235. reflex/utils/types.py +10 -5
  236. reflex/{ivars → vars}/__init__.py +6 -2
  237. reflex/{ivars → vars}/base.py +567 -206
  238. reflex/{ivars → vars}/function.py +15 -19
  239. reflex/{ivars → vars}/number.py +16 -18
  240. reflex/{ivars → vars}/object.py +28 -30
  241. reflex/{ivars → vars}/sequence.py +53 -42
  242. {reflex-0.6.0a1.dist-info → reflex-0.6.0a2.dist-info}/METADATA +2 -2
  243. reflex-0.6.0a2.dist-info/RECORD +382 -0
  244. reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +0 -36
  245. reflex/vars.py +0 -501
  246. reflex-0.6.0a1.dist-info/RECORD +0 -384
  247. {reflex-0.6.0a1.dist-info → reflex-0.6.0a2.dist-info}/LICENSE +0 -0
  248. {reflex-0.6.0a1.dist-info → reflex-0.6.0a2.dist-info}/WHEEL +0 -0
  249. {reflex-0.6.0a1.dist-info → reflex-0.6.0a2.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):