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
@@ -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
  )