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
@@ -9,12 +9,12 @@ from reflex.base import Base
9
9
  from reflex.components.component import Component, NoSSRComponent
10
10
  from reflex.components.literals import LiteralRowMarker
11
11
  from reflex.event import EventHandler
12
- from reflex.ivars.base import ImmutableVar
13
- from reflex.ivars.sequence import ArrayVar
14
12
  from reflex.utils import console, format, types
15
13
  from reflex.utils.imports import ImportDict, ImportVar
16
14
  from reflex.utils.serializers import serializer
17
- from reflex.vars import Var, get_unique_variable_name
15
+ from reflex.vars import get_unique_variable_name
16
+ from reflex.vars.base import Var
17
+ from reflex.vars.sequence import ArrayVar
18
18
 
19
19
 
20
20
  # TODO: Fix the serialization issue for custom types.
@@ -295,7 +295,7 @@ class DataEditor(NoSSRComponent):
295
295
 
296
296
  # Define the name of the getData callback associated with this component and assign to get_cell_content.
297
297
  data_callback = f"getData_{editor_id}"
298
- self.get_cell_content = ImmutableVar.create(data_callback) # type: ignore
298
+ self.get_cell_content = Var(_js_expr=data_callback) # type: ignore
299
299
 
300
300
  code = [f"function {data_callback}([col, row])" "{"]
301
301
 
@@ -333,18 +333,16 @@ class DataEditor(NoSSRComponent):
333
333
 
334
334
  # If rows is not provided, determine from data.
335
335
  if rows is None:
336
- if isinstance(data, ImmutableVar) and not isinstance(data, ArrayVar):
336
+ if isinstance(data, Var) and not isinstance(data, ArrayVar):
337
337
  raise ValueError(
338
338
  "DataEditor data must be an ArrayVar if rows is not provided."
339
339
  )
340
- props["rows"] = (
341
- data.length() if isinstance(data, ImmutableVar) else len(data)
342
- )
340
+ props["rows"] = data.length() if isinstance(data, Var) else len(data)
343
341
 
344
- if not isinstance(columns, ImmutableVar) and len(columns):
342
+ if not isinstance(columns, Var) and len(columns):
345
343
  if (
346
344
  types.is_dataframe(type(data))
347
- or isinstance(data, ImmutableVar)
345
+ or isinstance(data, Var)
348
346
  and types.is_dataframe(data._var_type)
349
347
  ):
350
348
  raise ValueError(
@@ -9,11 +9,10 @@ from typing import Any, Callable, Dict, List, Literal, Optional, Union, overload
9
9
  from reflex.base import Base
10
10
  from reflex.components.component import NoSSRComponent
11
11
  from reflex.event import EventHandler, EventSpec
12
- from reflex.ivars.base import ImmutableVar
13
12
  from reflex.style import Style
14
13
  from reflex.utils.imports import ImportDict
15
14
  from reflex.utils.serializers import serializer
16
- from reflex.vars import Var
15
+ from reflex.vars.base import Var
17
16
 
18
17
  class GridColumnIcons(Enum):
19
18
  Array = "array"
@@ -89,9 +88,9 @@ class DataEditor(NoSSRComponent):
89
88
  *children,
90
89
  rows: Optional[Union[Var[int], int]] = None,
91
90
  columns: Optional[
92
- Union[Var[List[Dict[str, Any]]], List[Dict[str, Any]]]
91
+ Union[List[Dict[str, Any]], Var[List[Dict[str, Any]]]]
93
92
  ] = None,
94
- data: Optional[Union[Var[List[List[Any]]], List[List[Any]]]] = None,
93
+ data: Optional[Union[List[List[Any]], Var[List[List[Any]]]]] = None,
95
94
  get_cell_content: Optional[Union[Var[str], str]] = None,
96
95
  get_cell_for_selection: Optional[Union[Var[bool], bool]] = None,
97
96
  on_paste: Optional[Union[Var[bool], bool]] = None,
@@ -107,8 +106,8 @@ class DataEditor(NoSSRComponent):
107
106
  row_height: Optional[Union[Var[int], int]] = None,
108
107
  row_markers: Optional[
109
108
  Union[
110
- Var[Literal["none", "number", "checkbox", "both", "clickable-number"]],
111
- Literal["none", "number", "checkbox", "both", "clickable-number"],
109
+ Literal["both", "checkbox", "clickable-number", "none", "number"],
110
+ Var[Literal["both", "checkbox", "clickable-number", "none", "number"]],
112
111
  ]
113
112
  ] = None,
114
113
  row_marker_start_index: Optional[Union[Var[int], int]] = None,
@@ -118,8 +117,8 @@ class DataEditor(NoSSRComponent):
118
117
  vertical_border: Optional[Union[Var[bool], bool]] = None,
119
118
  column_select: Optional[
120
119
  Union[
121
- Var[Literal["none", "single", "multi"]],
122
- Literal["none", "single", "multi"],
120
+ Literal["multi", "none", "single"],
121
+ Var[Literal["multi", "none", "single"]],
123
122
  ]
124
123
  ] = None,
125
124
  prevent_diagonal_scrolling: Optional[Union[Var[bool], bool]] = None,
@@ -128,106 +127,94 @@ class DataEditor(NoSSRComponent):
128
127
  scroll_offset_x: Optional[Union[Var[int], int]] = None,
129
128
  scroll_offset_y: Optional[Union[Var[int], int]] = None,
130
129
  theme: Optional[
131
- Union[Var[Union[DataEditorTheme, Dict]], DataEditorTheme, Dict]
130
+ Union[DataEditorTheme, Dict, Var[Union[DataEditorTheme, Dict]]]
132
131
  ] = None,
133
132
  style: Optional[Style] = None,
134
133
  key: Optional[Any] = None,
135
134
  id: Optional[Any] = None,
136
135
  class_name: Optional[Any] = None,
137
136
  autofocus: Optional[bool] = None,
138
- custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
139
- on_blur: Optional[
140
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
141
- ] = None,
137
+ custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
138
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
142
139
  on_cell_activated: Optional[
143
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
140
+ Union[EventHandler, EventSpec, list, Callable, Var]
144
141
  ] = None,
145
142
  on_cell_clicked: Optional[
146
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
143
+ Union[EventHandler, EventSpec, list, Callable, Var]
147
144
  ] = None,
148
145
  on_cell_context_menu: Optional[
149
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
146
+ Union[EventHandler, EventSpec, list, Callable, Var]
150
147
  ] = None,
151
148
  on_cell_edited: Optional[
152
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
153
- ] = None,
154
- on_click: Optional[
155
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
149
+ Union[EventHandler, EventSpec, list, Callable, Var]
156
150
  ] = None,
151
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
157
152
  on_column_resize: Optional[
158
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
153
+ Union[EventHandler, EventSpec, list, Callable, Var]
159
154
  ] = None,
160
155
  on_context_menu: Optional[
161
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
162
- ] = None,
163
- on_delete: Optional[
164
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
156
+ Union[EventHandler, EventSpec, list, Callable, Var]
165
157
  ] = None,
158
+ on_delete: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
166
159
  on_double_click: Optional[
167
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
160
+ Union[EventHandler, EventSpec, list, Callable, Var]
168
161
  ] = None,
169
162
  on_finished_editing: Optional[
170
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
171
- ] = None,
172
- on_focus: Optional[
173
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
163
+ Union[EventHandler, EventSpec, list, Callable, Var]
174
164
  ] = None,
165
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
175
166
  on_group_header_clicked: Optional[
176
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
167
+ Union[EventHandler, EventSpec, list, Callable, Var]
177
168
  ] = None,
178
169
  on_group_header_context_menu: Optional[
179
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
170
+ Union[EventHandler, EventSpec, list, Callable, Var]
180
171
  ] = None,
181
172
  on_group_header_renamed: Optional[
182
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
173
+ Union[EventHandler, EventSpec, list, Callable, Var]
183
174
  ] = None,
184
175
  on_header_clicked: Optional[
185
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
176
+ Union[EventHandler, EventSpec, list, Callable, Var]
186
177
  ] = None,
187
178
  on_header_context_menu: Optional[
188
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
179
+ Union[EventHandler, EventSpec, list, Callable, Var]
189
180
  ] = None,
190
181
  on_header_menu_click: Optional[
191
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
182
+ Union[EventHandler, EventSpec, list, Callable, Var]
192
183
  ] = None,
193
184
  on_item_hovered: Optional[
194
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
195
- ] = None,
196
- on_mount: Optional[
197
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
185
+ Union[EventHandler, EventSpec, list, Callable, Var]
198
186
  ] = None,
187
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
199
188
  on_mouse_down: Optional[
200
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
189
+ Union[EventHandler, EventSpec, list, Callable, Var]
201
190
  ] = None,
202
191
  on_mouse_enter: Optional[
203
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
192
+ Union[EventHandler, EventSpec, list, Callable, Var]
204
193
  ] = None,
205
194
  on_mouse_leave: Optional[
206
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
195
+ Union[EventHandler, EventSpec, list, Callable, Var]
207
196
  ] = None,
208
197
  on_mouse_move: Optional[
209
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
198
+ Union[EventHandler, EventSpec, list, Callable, Var]
210
199
  ] = None,
211
200
  on_mouse_out: Optional[
212
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
201
+ Union[EventHandler, EventSpec, list, Callable, Var]
213
202
  ] = None,
214
203
  on_mouse_over: Optional[
215
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
204
+ Union[EventHandler, EventSpec, list, Callable, Var]
216
205
  ] = None,
217
206
  on_mouse_up: Optional[
218
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
207
+ Union[EventHandler, EventSpec, list, Callable, Var]
219
208
  ] = None,
220
209
  on_row_appended: Optional[
221
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
222
- ] = None,
223
- on_scroll: Optional[
224
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
210
+ Union[EventHandler, EventSpec, list, Callable, Var]
225
211
  ] = None,
212
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
226
213
  on_selection_cleared: Optional[
227
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
214
+ Union[EventHandler, EventSpec, list, Callable, Var]
228
215
  ] = None,
229
216
  on_unmount: Optional[
230
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
217
+ Union[EventHandler, EventSpec, list, Callable, Var]
231
218
  ] = None,
232
219
  **props,
233
220
  ) -> "DataEditor":
@@ -7,8 +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
11
+ from reflex.vars.base import Var
12
12
 
13
13
  class Element(Component):
14
14
  @overload
@@ -21,51 +21,41 @@ class Element(Component):
21
21
  id: Optional[Any] = None,
22
22
  class_name: Optional[Any] = None,
23
23
  autofocus: Optional[bool] = None,
24
- custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
25
- on_blur: Optional[
26
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
27
- ] = None,
28
- on_click: Optional[
29
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
30
- ] = 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,
31
27
  on_context_menu: Optional[
32
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
28
+ Union[EventHandler, EventSpec, list, Callable, Var]
33
29
  ] = None,
34
30
  on_double_click: Optional[
35
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
36
- ] = None,
37
- on_focus: Optional[
38
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
39
- ] = None,
40
- on_mount: Optional[
41
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
31
+ Union[EventHandler, EventSpec, list, Callable, Var]
42
32
  ] = None,
33
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
34
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
43
35
  on_mouse_down: Optional[
44
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
36
+ Union[EventHandler, EventSpec, list, Callable, Var]
45
37
  ] = None,
46
38
  on_mouse_enter: Optional[
47
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
39
+ Union[EventHandler, EventSpec, list, Callable, Var]
48
40
  ] = None,
49
41
  on_mouse_leave: Optional[
50
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
42
+ Union[EventHandler, EventSpec, list, Callable, Var]
51
43
  ] = None,
52
44
  on_mouse_move: Optional[
53
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
45
+ Union[EventHandler, EventSpec, list, Callable, Var]
54
46
  ] = None,
55
47
  on_mouse_out: Optional[
56
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
48
+ Union[EventHandler, EventSpec, list, Callable, Var]
57
49
  ] = None,
58
50
  on_mouse_over: Optional[
59
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
51
+ Union[EventHandler, EventSpec, list, Callable, Var]
60
52
  ] = None,
61
53
  on_mouse_up: Optional[
62
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
63
- ] = None,
64
- on_scroll: Optional[
65
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
54
+ Union[EventHandler, EventSpec, list, Callable, Var]
66
55
  ] = None,
56
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
67
57
  on_unmount: Optional[
68
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
58
+ Union[EventHandler, EventSpec, list, Callable, Var]
69
59
  ] = None,
70
60
  **props,
71
61
  ) -> "Element":
@@ -3,7 +3,7 @@
3
3
  from typing import Union
4
4
 
5
5
  from reflex.components.el.element import Element
6
- from reflex.vars import Var as Var
6
+ from reflex.vars.base import Var
7
7
 
8
8
 
9
9
  class BaseHTML(Element):
@@ -7,9 +7,8 @@ from typing import Any, Callable, Dict, Optional, Union, overload
7
7
 
8
8
  from reflex.components.el.element import Element
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 BaseHTML(Element):
15
14
  @overload
@@ -17,80 +16,70 @@ class BaseHTML(Element):
17
16
  def create( # type: ignore
18
17
  cls,
19
18
  *children,
20
- access_key: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
19
+ access_key: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
21
20
  auto_capitalize: Optional[
22
- Union[Var[Union[bool, int, str]], str, int, bool]
21
+ Union[Var[Union[bool, int, str]], bool, int, str]
23
22
  ] = None,
24
23
  content_editable: Optional[
25
- Union[Var[Union[bool, int, str]], str, int, bool]
24
+ Union[Var[Union[bool, int, str]], bool, int, str]
26
25
  ] = None,
27
26
  context_menu: Optional[
28
- Union[Var[Union[bool, int, str]], str, int, bool]
27
+ Union[Var[Union[bool, int, str]], bool, int, str]
29
28
  ] = None,
30
- dir: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
31
- draggable: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
29
+ dir: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
30
+ draggable: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
32
31
  enter_key_hint: Optional[
33
- Union[Var[Union[bool, int, str]], str, int, bool]
34
- ] = None,
35
- hidden: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
36
- input_mode: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
37
- item_prop: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
38
- lang: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
39
- role: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
40
- slot: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
41
- spell_check: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
42
- tab_index: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
43
- title: Optional[Union[Var[Union[bool, int, str]], str, int, bool]] = None,
32
+ Union[Var[Union[bool, int, str]], bool, int, str]
33
+ ] = None,
34
+ hidden: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
35
+ input_mode: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
36
+ item_prop: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
37
+ lang: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
38
+ role: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
39
+ slot: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
40
+ spell_check: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
41
+ tab_index: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
42
+ title: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
44
43
  style: Optional[Style] = None,
45
44
  key: Optional[Any] = None,
46
45
  id: Optional[Any] = None,
47
46
  class_name: Optional[Any] = None,
48
47
  autofocus: Optional[bool] = None,
49
- custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
50
- on_blur: Optional[
51
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
52
- ] = None,
53
- on_click: Optional[
54
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
55
- ] = None,
48
+ custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
49
+ on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
50
+ on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
56
51
  on_context_menu: Optional[
57
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
52
+ Union[EventHandler, EventSpec, list, Callable, Var]
58
53
  ] = None,
59
54
  on_double_click: Optional[
60
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
61
- ] = None,
62
- on_focus: Optional[
63
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
64
- ] = None,
65
- on_mount: Optional[
66
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
55
+ Union[EventHandler, EventSpec, list, Callable, Var]
67
56
  ] = None,
57
+ on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
58
+ on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
68
59
  on_mouse_down: Optional[
69
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
60
+ Union[EventHandler, EventSpec, list, Callable, Var]
70
61
  ] = None,
71
62
  on_mouse_enter: Optional[
72
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
63
+ Union[EventHandler, EventSpec, list, Callable, Var]
73
64
  ] = None,
74
65
  on_mouse_leave: Optional[
75
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
66
+ Union[EventHandler, EventSpec, list, Callable, Var]
76
67
  ] = None,
77
68
  on_mouse_move: Optional[
78
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
69
+ Union[EventHandler, EventSpec, list, Callable, Var]
79
70
  ] = None,
80
71
  on_mouse_out: Optional[
81
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
72
+ Union[EventHandler, EventSpec, list, Callable, Var]
82
73
  ] = None,
83
74
  on_mouse_over: Optional[
84
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
75
+ Union[EventHandler, EventSpec, list, Callable, Var]
85
76
  ] = None,
86
77
  on_mouse_up: Optional[
87
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
88
- ] = None,
89
- on_scroll: Optional[
90
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
78
+ Union[EventHandler, EventSpec, list, Callable, Var]
91
79
  ] = None,
80
+ on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
92
81
  on_unmount: Optional[
93
- Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
82
+ Union[EventHandler, EventSpec, list, Callable, Var]
94
83
  ] = None,
95
84
  **props,
96
85
  ) -> "BaseHTML":
@@ -11,13 +11,13 @@ from reflex.components.el.element import Element
11
11
  from reflex.components.tags.tag import Tag
12
12
  from reflex.constants import Dirs, EventTriggers
13
13
  from reflex.event import EventChain, EventHandler
14
- from reflex.ivars.base import ImmutableVar, LiteralVar
15
14
  from reflex.utils.imports import ImportDict
16
- from reflex.vars import Var, VarData
15
+ from reflex.vars import VarData
16
+ from reflex.vars.base import LiteralVar, Var
17
17
 
18
18
  from .base import BaseHTML
19
19
 
20
- FORM_DATA = ImmutableVar.create("form_data")
20
+ FORM_DATA = Var(_js_expr="form_data")
21
21
  HANDLE_SUBMIT_JS_JINJA2 = Environment().from_string(
22
22
  """
23
23
  const handleSubmit_{{ handle_submit_unique_name }} = useCallback((ev) => {
@@ -197,8 +197,8 @@ class Form(BaseHTML):
197
197
  if EventTriggers.ON_SUBMIT in self.event_triggers:
198
198
  render_tag.add_props(
199
199
  **{
200
- EventTriggers.ON_SUBMIT: ImmutableVar(
201
- _var_name=f"handleSubmit_{self.handle_submit_unique_name}",
200
+ EventTriggers.ON_SUBMIT: Var(
201
+ _js_expr=f"handleSubmit_{self.handle_submit_unique_name}",
202
202
  _var_type=EventChain,
203
203
  )
204
204
  }
@@ -212,21 +212,21 @@ class Form(BaseHTML):
212
212
  # when ref start with refs_ it's an array of refs, so we need different method
213
213
  # to collect data
214
214
  if ref.startswith("refs_"):
215
- ref_var = ImmutableVar.create_safe(ref[:-3]).as_ref()
216
- form_refs[ref[len("refs_") : -3]] = ImmutableVar.create_safe(
217
- f"getRefValues({str(ref_var)})",
215
+ ref_var = Var(_js_expr=ref[:-3]).as_ref()
216
+ form_refs[ref[len("refs_") : -3]] = Var(
217
+ _js_expr=f"getRefValues({str(ref_var)})",
218
218
  _var_data=VarData.merge(ref_var._get_all_var_data()),
219
219
  )
220
220
  else:
221
- ref_var = ImmutableVar.create_safe(ref).as_ref()
222
- form_refs[ref[4:]] = ImmutableVar.create_safe(
223
- f"getRefValue({str(ref_var)})",
221
+ ref_var = Var(_js_expr=ref).as_ref()
222
+ form_refs[ref[4:]] = Var(
223
+ _js_expr=f"getRefValue({str(ref_var)})",
224
224
  _var_data=VarData.merge(ref_var._get_all_var_data()),
225
225
  )
226
226
  # print(repr(form_refs))
227
227
  return form_refs
228
228
 
229
- def _get_vars(self, include_children: bool = True) -> Iterator[ImmutableVar]:
229
+ def _get_vars(self, include_children: bool = True) -> Iterator[Var]:
230
230
  yield from super()._get_vars(include_children=include_children)
231
231
  yield from self._get_form_refs().values()
232
232
 
@@ -624,15 +624,15 @@ class Textarea(BaseHTML):
624
624
  "Cannot combine `enter_key_submit` with `on_key_down`.",
625
625
  )
626
626
  tag.add_props(
627
- on_key_down=ImmutableVar.create_safe(
628
- f"(e) => enterKeySubmitOnKeyDown(e, {str(self.enter_key_submit)})",
627
+ on_key_down=Var(
628
+ _js_expr=f"(e) => enterKeySubmitOnKeyDown(e, {str(self.enter_key_submit)})",
629
629
  _var_data=VarData.merge(self.enter_key_submit._get_all_var_data()),
630
630
  )
631
631
  )
632
632
  if self.auto_height is not None:
633
633
  tag.add_props(
634
- on_input=ImmutableVar.create_safe(
635
- f"(e) => autoHeightOnInput(e, {str(self.auto_height)})",
634
+ on_input=Var(
635
+ _js_expr=f"(e) => autoHeightOnInput(e, {str(self.auto_height)})",
636
636
  _var_data=VarData.merge(self.auto_height._get_all_var_data()),
637
637
  )
638
638
  )