reflex 0.5.10a3__py3-none-any.whl → 0.6.0a1__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 (237) hide show
  1. reflex/.templates/jinja/web/pages/utils.js.jinja2 +4 -4
  2. reflex/.templates/jinja/web/utils/context.js.jinja2 +1 -1
  3. reflex/.templates/jinja/web/utils/theme.js.jinja2 +1 -1
  4. reflex/__init__.py +3 -2
  5. reflex/__init__.pyi +2 -2
  6. reflex/app.py +43 -9
  7. reflex/base.py +3 -2
  8. reflex/compiler/compiler.py +6 -6
  9. reflex/compiler/utils.py +5 -3
  10. reflex/components/base/app_wrap.py +2 -4
  11. reflex/components/base/app_wrap.pyi +17 -17
  12. reflex/components/base/bare.py +7 -4
  13. reflex/components/base/body.pyi +17 -17
  14. reflex/components/base/document.pyi +81 -81
  15. reflex/components/base/error_boundary.py +10 -8
  16. reflex/components/base/error_boundary.pyi +20 -19
  17. reflex/components/base/fragment.pyi +17 -17
  18. reflex/components/base/head.pyi +33 -33
  19. reflex/components/base/link.pyi +34 -33
  20. reflex/components/base/meta.pyi +65 -65
  21. reflex/components/base/script.py +2 -1
  22. reflex/components/base/script.pyi +21 -20
  23. reflex/components/component.py +116 -145
  24. reflex/components/core/banner.py +59 -60
  25. reflex/components/core/banner.pyi +86 -150
  26. reflex/components/core/client_side_routing.py +2 -1
  27. reflex/components/core/client_side_routing.pyi +34 -33
  28. reflex/components/core/clipboard.py +2 -2
  29. reflex/components/core/clipboard.pyi +19 -18
  30. reflex/components/core/cond.py +21 -44
  31. reflex/components/core/debounce.py +6 -8
  32. reflex/components/core/debounce.pyi +19 -18
  33. reflex/components/core/foreach.py +5 -14
  34. reflex/components/core/html.pyi +18 -17
  35. reflex/components/core/match.py +36 -43
  36. reflex/components/core/upload.py +32 -25
  37. reflex/components/core/upload.pyi +84 -73
  38. reflex/components/datadisplay/code.py +55 -28
  39. reflex/components/datadisplay/code.pyi +20 -17
  40. reflex/components/datadisplay/dataeditor.py +17 -11
  41. reflex/components/datadisplay/dataeditor.pyi +34 -33
  42. reflex/components/el/__init__.py +0 -1
  43. reflex/components/el/__init__.pyi +0 -11
  44. reflex/components/el/element.pyi +17 -17
  45. reflex/components/el/elements/__init__.py +1 -7
  46. reflex/components/el/elements/__init__.pyi +1 -15
  47. reflex/components/el/elements/base.pyi +18 -17
  48. reflex/components/el/elements/forms.py +24 -31
  49. reflex/components/el/elements/forms.pyi +237 -236
  50. reflex/components/el/elements/inline.pyi +450 -449
  51. reflex/components/el/elements/media.py +0 -21
  52. reflex/components/el/elements/media.pyi +338 -337
  53. reflex/components/el/elements/metadata.py +3 -2
  54. reflex/components/el/elements/metadata.pyi +98 -97
  55. reflex/components/el/elements/other.pyi +114 -113
  56. reflex/components/el/elements/scripts.pyi +50 -49
  57. reflex/components/el/elements/sectioning.pyi +242 -241
  58. reflex/components/el/elements/tables.pyi +162 -161
  59. reflex/components/el/elements/typography.pyi +242 -241
  60. reflex/components/gridjs/datatable.py +13 -14
  61. reflex/components/gridjs/datatable.pyi +34 -33
  62. reflex/components/lucide/icon.py +2 -126
  63. reflex/components/lucide/icon.pyi +34 -142
  64. reflex/components/markdown/markdown.py +30 -35
  65. reflex/components/markdown/markdown.pyi +29 -32
  66. reflex/components/moment/moment.pyi +19 -18
  67. reflex/components/next/base.pyi +17 -17
  68. reflex/components/next/image.py +0 -4
  69. reflex/components/next/image.pyi +20 -19
  70. reflex/components/next/link.pyi +18 -17
  71. reflex/components/next/video.pyi +18 -17
  72. reflex/components/plotly/plotly.py +16 -28
  73. reflex/components/plotly/plotly.pyi +36 -35
  74. reflex/components/props.py +21 -10
  75. reflex/components/radix/__init__.pyi +1 -1
  76. reflex/components/radix/primitives/__init__.pyi +0 -1
  77. reflex/components/radix/primitives/accordion.py +7 -8
  78. reflex/components/radix/primitives/accordion.pyi +117 -116
  79. reflex/components/radix/primitives/base.pyi +34 -33
  80. reflex/components/radix/primitives/drawer.pyi +169 -168
  81. reflex/components/radix/primitives/form.pyi +168 -167
  82. reflex/components/radix/primitives/progress.pyi +82 -81
  83. reflex/components/radix/primitives/slider.pyi +84 -83
  84. reflex/components/radix/themes/base.py +8 -4
  85. reflex/components/radix/themes/base.pyi +114 -113
  86. reflex/components/radix/themes/color_mode.py +12 -21
  87. reflex/components/radix/themes/color_mode.pyi +67 -67
  88. reflex/components/radix/themes/components/__init__.pyi +1 -0
  89. reflex/components/radix/themes/components/alert_dialog.pyi +118 -117
  90. reflex/components/radix/themes/components/aspect_ratio.pyi +18 -17
  91. reflex/components/radix/themes/components/avatar.pyi +18 -17
  92. reflex/components/radix/themes/components/badge.pyi +18 -17
  93. reflex/components/radix/themes/components/button.pyi +18 -17
  94. reflex/components/radix/themes/components/callout.pyi +82 -81
  95. reflex/components/radix/themes/components/card.pyi +18 -17
  96. reflex/components/radix/themes/components/checkbox.py +2 -3
  97. reflex/components/radix/themes/components/checkbox.pyi +53 -52
  98. reflex/components/radix/themes/components/checkbox_cards.pyi +34 -33
  99. reflex/components/radix/themes/components/checkbox_group.pyi +34 -33
  100. reflex/components/radix/themes/components/context_menu.pyi +140 -139
  101. reflex/components/radix/themes/components/data_list.py +5 -0
  102. reflex/components/radix/themes/components/data_list.pyi +71 -65
  103. reflex/components/radix/themes/components/dialog.pyi +121 -120
  104. reflex/components/radix/themes/components/dropdown_menu.pyi +142 -141
  105. reflex/components/radix/themes/components/hover_card.pyi +68 -67
  106. reflex/components/radix/themes/components/icon_button.py +2 -1
  107. reflex/components/radix/themes/components/icon_button.pyi +18 -17
  108. reflex/components/radix/themes/components/inset.pyi +18 -17
  109. reflex/components/radix/themes/components/popover.pyi +73 -72
  110. reflex/components/radix/themes/components/progress.pyi +18 -17
  111. reflex/components/radix/themes/components/radio.pyi +18 -17
  112. reflex/components/radix/themes/components/radio_cards.pyi +35 -34
  113. reflex/components/radix/themes/components/radio_group.py +35 -31
  114. reflex/components/radix/themes/components/radio_group.pyi +73 -66
  115. reflex/components/radix/themes/components/scroll_area.pyi +18 -17
  116. reflex/components/radix/themes/components/segmented_control.pyi +35 -34
  117. reflex/components/radix/themes/components/select.py +2 -1
  118. reflex/components/radix/themes/components/select.pyi +155 -154
  119. reflex/components/radix/themes/components/separator.py +2 -3
  120. reflex/components/radix/themes/components/separator.pyi +18 -17
  121. reflex/components/radix/themes/components/skeleton.pyi +18 -17
  122. reflex/components/radix/themes/components/slider.py +2 -1
  123. reflex/components/radix/themes/components/slider.pyi +20 -19
  124. reflex/components/radix/themes/components/spinner.pyi +18 -17
  125. reflex/components/radix/themes/components/switch.pyi +19 -18
  126. reflex/components/radix/themes/components/table.pyi +114 -113
  127. reflex/components/radix/themes/components/tabs.pyi +84 -83
  128. reflex/components/radix/themes/components/text_area.pyi +21 -20
  129. reflex/components/radix/themes/components/text_field.py +0 -79
  130. reflex/components/radix/themes/components/text_field.pyi +57 -63
  131. reflex/components/radix/themes/components/tooltip.pyi +21 -20
  132. reflex/components/radix/themes/layout/base.pyi +18 -17
  133. reflex/components/radix/themes/layout/box.pyi +18 -17
  134. reflex/components/radix/themes/layout/center.pyi +18 -17
  135. reflex/components/radix/themes/layout/container.py +2 -3
  136. reflex/components/radix/themes/layout/container.pyi +18 -17
  137. reflex/components/radix/themes/layout/flex.pyi +18 -17
  138. reflex/components/radix/themes/layout/grid.pyi +18 -17
  139. reflex/components/radix/themes/layout/list.py +5 -4
  140. reflex/components/radix/themes/layout/list.pyi +86 -85
  141. reflex/components/radix/themes/layout/section.py +2 -3
  142. reflex/components/radix/themes/layout/section.pyi +18 -17
  143. reflex/components/radix/themes/layout/spacer.pyi +18 -17
  144. reflex/components/radix/themes/layout/stack.pyi +50 -49
  145. reflex/components/radix/themes/typography/blockquote.pyi +18 -17
  146. reflex/components/radix/themes/typography/code.pyi +18 -17
  147. reflex/components/radix/themes/typography/heading.pyi +18 -17
  148. reflex/components/radix/themes/typography/link.pyi +18 -17
  149. reflex/components/radix/themes/typography/text.pyi +114 -113
  150. reflex/components/react_player/audio.pyi +34 -33
  151. reflex/components/react_player/react_player.pyi +34 -33
  152. reflex/components/react_player/video.pyi +34 -33
  153. reflex/components/recharts/cartesian.py +23 -19
  154. reflex/components/recharts/cartesian.pyi +297 -296
  155. reflex/components/recharts/charts.py +6 -5
  156. reflex/components/recharts/charts.pyi +179 -178
  157. reflex/components/recharts/general.py +8 -7
  158. reflex/components/recharts/general.pyi +82 -81
  159. reflex/components/recharts/polar.py +14 -13
  160. reflex/components/recharts/polar.pyi +76 -75
  161. reflex/components/recharts/recharts.pyi +33 -33
  162. reflex/components/sonner/toast.py +30 -33
  163. reflex/components/sonner/toast.pyi +27 -25
  164. reflex/components/suneditor/editor.py +2 -1
  165. reflex/components/suneditor/editor.pyi +27 -26
  166. reflex/components/tags/iter_tag.py +16 -16
  167. reflex/components/tags/tag.py +8 -10
  168. reflex/constants/base.py +3 -1
  169. reflex/constants/event.py +1 -0
  170. reflex/event.py +89 -79
  171. reflex/experimental/__init__.py +25 -6
  172. reflex/experimental/client_state.py +34 -58
  173. reflex/experimental/hooks.py +13 -18
  174. reflex/experimental/layout.py +5 -5
  175. reflex/experimental/layout.pyi +84 -83
  176. reflex/{experimental/vars → ivars}/__init__.py +0 -1
  177. reflex/ivars/base.py +2180 -0
  178. reflex/ivars/function.py +200 -0
  179. reflex/ivars/number.py +1137 -0
  180. reflex/ivars/object.py +564 -0
  181. reflex/ivars/sequence.py +1601 -0
  182. reflex/model.py +22 -0
  183. reflex/reflex.py +4 -0
  184. reflex/state.py +388 -73
  185. reflex/style.py +52 -34
  186. reflex/testing.py +8 -3
  187. reflex/utils/exceptions.py +12 -0
  188. reflex/utils/exec.py +0 -14
  189. reflex/utils/format.py +74 -223
  190. reflex/utils/net.py +43 -0
  191. reflex/utils/path_ops.py +13 -1
  192. reflex/utils/prerequisites.py +46 -26
  193. reflex/utils/pyi_generator.py +5 -4
  194. reflex/utils/serializers.py +13 -31
  195. reflex/utils/types.py +44 -9
  196. reflex/vars.py +127 -2230
  197. {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/METADATA +4 -6
  198. reflex-0.6.0a1.dist-info/RECORD +384 -0
  199. reflex/.templates/apps/demo/.gitignore +0 -4
  200. reflex/.templates/apps/demo/assets/favicon.ico +0 -0
  201. reflex/.templates/apps/demo/assets/github.svg +0 -10
  202. reflex/.templates/apps/demo/assets/icon.svg +0 -37
  203. reflex/.templates/apps/demo/assets/logo.svg +0 -68
  204. reflex/.templates/apps/demo/assets/paneleft.svg +0 -13
  205. reflex/.templates/apps/demo/code/__init__.py +0 -1
  206. reflex/.templates/apps/demo/code/demo.py +0 -127
  207. reflex/.templates/apps/demo/code/pages/__init__.py +0 -7
  208. reflex/.templates/apps/demo/code/pages/chatapp.py +0 -31
  209. reflex/.templates/apps/demo/code/pages/datatable.py +0 -360
  210. reflex/.templates/apps/demo/code/pages/forms.py +0 -257
  211. reflex/.templates/apps/demo/code/pages/graphing.py +0 -253
  212. reflex/.templates/apps/demo/code/pages/home.py +0 -56
  213. reflex/.templates/apps/demo/code/sidebar.py +0 -178
  214. reflex/.templates/apps/demo/code/state.py +0 -22
  215. reflex/.templates/apps/demo/code/states/form_state.py +0 -40
  216. reflex/.templates/apps/demo/code/states/pie_state.py +0 -47
  217. reflex/.templates/apps/demo/code/styles.py +0 -68
  218. reflex/.templates/apps/demo/code/webui/__init__.py +0 -0
  219. reflex/.templates/apps/demo/code/webui/components/__init__.py +0 -4
  220. reflex/.templates/apps/demo/code/webui/components/chat.py +0 -118
  221. reflex/.templates/apps/demo/code/webui/components/loading_icon.py +0 -19
  222. reflex/.templates/apps/demo/code/webui/components/modal.py +0 -56
  223. reflex/.templates/apps/demo/code/webui/components/navbar.py +0 -70
  224. reflex/.templates/apps/demo/code/webui/components/sidebar.py +0 -66
  225. reflex/.templates/apps/demo/code/webui/state.py +0 -146
  226. reflex/.templates/apps/demo/code/webui/styles.py +0 -88
  227. reflex/experimental/vars/base.py +0 -583
  228. reflex/experimental/vars/function.py +0 -290
  229. reflex/experimental/vars/number.py +0 -1458
  230. reflex/experimental/vars/object.py +0 -804
  231. reflex/experimental/vars/sequence.py +0 -1764
  232. reflex/utils/watch.py +0 -96
  233. reflex/vars.pyi +0 -218
  234. reflex-0.5.10a3.dist-info/RECORD +0 -413
  235. {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/LICENSE +0 -0
  236. {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/WHEEL +0 -0
  237. {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/entry_points.txt +0 -0
@@ -10,9 +10,10 @@ from reflex.components.component import Component, ComponentNamespace
10
10
  from reflex.components.lucide.icon import Icon
11
11
  from reflex.components.props import PropsBase
12
12
  from reflex.event import EventHandler, EventSpec
13
+ from reflex.ivars.base import ImmutableVar
13
14
  from reflex.style import Style
14
15
  from reflex.utils.serializers import serializer
15
- from reflex.vars import BaseVar, Var
16
+ from reflex.vars import Var
16
17
 
17
18
  LiteralPosition = Literal[
18
19
  "top-left",
@@ -22,7 +23,7 @@ LiteralPosition = Literal[
22
23
  "bottom-center",
23
24
  "bottom-right",
24
25
  ]
25
- toast_ref = Var.create_safe("refs['__toast']", _var_is_string=False)
26
+ toast_ref = ImmutableVar.create_safe("refs['__toast']")
26
27
 
27
28
  class ToastAction(Base):
28
29
  label: str
@@ -32,7 +33,8 @@ class ToastAction(Base):
32
33
  def serialize_action(action: ToastAction) -> dict: ...
33
34
 
34
35
  class ToastProps(PropsBase):
35
- description: Optional[Union[str, Var]]
36
+ title: Optional[Union[str, ImmutableVar]]
37
+ description: Optional[Union[str, ImmutableVar]]
36
38
  close_button: Optional[bool]
37
39
  invert: Optional[bool]
38
40
  important: Optional[bool]
@@ -41,7 +43,7 @@ class ToastProps(PropsBase):
41
43
  dismissible: Optional[bool]
42
44
  action: Optional[ToastAction]
43
45
  cancel: Optional[ToastAction]
44
- id: Optional[Union[str, Var]]
46
+ id: Optional[Union[str, ImmutableVar]]
45
47
  unstyled: Optional[bool]
46
48
  style: Optional[Style]
47
49
  action_button_styles: Optional[Style]
@@ -59,19 +61,19 @@ class ToastProps(PropsBase):
59
61
  class Toaster(Component):
60
62
  is_used: ClassVar[bool] = False
61
63
 
62
- def add_hooks(self) -> list[Var | str]: ...
64
+ def add_hooks(self) -> list[ImmutableVar | str]: ...
63
65
  @staticmethod
64
66
  def send_toast(
65
67
  message: str = "", level: str | None = None, **props
66
68
  ) -> EventSpec: ...
67
69
  @staticmethod
68
- def toast_info(message: str, **kwargs): ...
70
+ def toast_info(message: str = "", **kwargs): ...
69
71
  @staticmethod
70
- def toast_warning(message: str, **kwargs): ...
72
+ def toast_warning(message: str = "", **kwargs): ...
71
73
  @staticmethod
72
- def toast_error(message: str, **kwargs): ...
74
+ def toast_error(message: str = "", **kwargs): ...
73
75
  @staticmethod
74
- def toast_success(message: str, **kwargs): ...
76
+ def toast_success(message: str = "", **kwargs): ...
75
77
  @staticmethod
76
78
  def toast_dismiss(id: Var | str | None = None): ...
77
79
  @overload
@@ -119,51 +121,51 @@ class Toaster(Component):
119
121
  id: Optional[Any] = None,
120
122
  class_name: Optional[Any] = None,
121
123
  autofocus: Optional[bool] = None,
122
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
124
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
123
125
  on_blur: Optional[
124
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
126
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
125
127
  ] = None,
126
128
  on_click: Optional[
127
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
129
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
128
130
  ] = None,
129
131
  on_context_menu: Optional[
130
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
132
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
131
133
  ] = None,
132
134
  on_double_click: Optional[
133
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
135
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
134
136
  ] = None,
135
137
  on_focus: Optional[
136
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
138
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
137
139
  ] = None,
138
140
  on_mount: Optional[
139
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
141
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
140
142
  ] = None,
141
143
  on_mouse_down: Optional[
142
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
144
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
143
145
  ] = None,
144
146
  on_mouse_enter: Optional[
145
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
147
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
146
148
  ] = None,
147
149
  on_mouse_leave: Optional[
148
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
150
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
149
151
  ] = None,
150
152
  on_mouse_move: Optional[
151
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
153
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
152
154
  ] = None,
153
155
  on_mouse_out: Optional[
154
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
156
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
155
157
  ] = None,
156
158
  on_mouse_over: Optional[
157
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
159
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
158
160
  ] = None,
159
161
  on_mouse_up: Optional[
160
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
162
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
161
163
  ] = None,
162
164
  on_scroll: Optional[
163
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
165
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
164
166
  ] = None,
165
167
  on_unmount: Optional[
166
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
168
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
167
169
  ] = None,
168
170
  **props,
169
171
  ) -> "Toaster":
@@ -8,6 +8,7 @@ from typing import Dict, List, Literal, Optional, Union
8
8
  from reflex.base import Base
9
9
  from reflex.components.component import Component, NoSSRComponent
10
10
  from reflex.event import EventHandler
11
+ from reflex.ivars.base import ImmutableVar
11
12
  from reflex.utils.format import to_camel_case
12
13
  from reflex.utils.imports import ImportDict, ImportVar
13
14
  from reflex.vars import Var
@@ -234,7 +235,7 @@ class Editor(NoSSRComponent):
234
235
  ValueError: If set_options is a state Var.
235
236
  """
236
237
  if set_options is not None:
237
- if isinstance(set_options, Var):
238
+ if isinstance(set_options, ImmutableVar):
238
239
  raise ValueError("EditorOptions cannot be a state Var")
239
240
  props["set_options"] = {
240
241
  to_camel_case(k): v
@@ -9,9 +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
12
13
  from reflex.style import Style
13
14
  from reflex.utils.imports import ImportDict
14
- from reflex.vars import BaseVar, Var
15
+ from reflex.vars import Var
15
16
 
16
17
  class EditorButtonList(list, enum.Enum):
17
18
  BASIC = [["font", "fontSize"], ["fontColor"], ["horizontalRule"], ["link", "image"]]
@@ -121,78 +122,78 @@ class Editor(NoSSRComponent):
121
122
  id: Optional[Any] = None,
122
123
  class_name: Optional[Any] = None,
123
124
  autofocus: Optional[bool] = None,
124
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
125
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
125
126
  on_blur: Optional[
126
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
127
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
127
128
  ] = None,
128
129
  on_change: Optional[
129
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
130
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
130
131
  ] = None,
131
132
  on_click: Optional[
132
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
133
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
133
134
  ] = None,
134
135
  on_context_menu: Optional[
135
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
136
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
136
137
  ] = None,
137
138
  on_copy: Optional[
138
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
139
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
139
140
  ] = None,
140
141
  on_cut: Optional[
141
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
142
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
142
143
  ] = None,
143
144
  on_double_click: Optional[
144
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
145
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
145
146
  ] = None,
146
147
  on_focus: Optional[
147
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
148
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
148
149
  ] = None,
149
150
  on_input: Optional[
150
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
151
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
151
152
  ] = None,
152
153
  on_load: Optional[
153
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
154
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
154
155
  ] = None,
155
156
  on_mount: Optional[
156
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
157
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
157
158
  ] = None,
158
159
  on_mouse_down: Optional[
159
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
160
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
160
161
  ] = None,
161
162
  on_mouse_enter: Optional[
162
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
163
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
163
164
  ] = None,
164
165
  on_mouse_leave: Optional[
165
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
166
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
166
167
  ] = None,
167
168
  on_mouse_move: Optional[
168
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
169
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
169
170
  ] = None,
170
171
  on_mouse_out: Optional[
171
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
172
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
172
173
  ] = None,
173
174
  on_mouse_over: Optional[
174
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
175
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
175
176
  ] = None,
176
177
  on_mouse_up: Optional[
177
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
178
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
178
179
  ] = None,
179
180
  on_paste: Optional[
180
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
181
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
181
182
  ] = None,
182
183
  on_resize_editor: Optional[
183
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
184
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
184
185
  ] = None,
185
186
  on_scroll: Optional[
186
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
187
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
187
188
  ] = None,
188
189
  on_unmount: Optional[
189
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
190
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
190
191
  ] = None,
191
192
  toggle_code_view: Optional[
192
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
193
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
193
194
  ] = None,
194
195
  toggle_full_screen: Optional[
195
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
196
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
196
197
  ] = None,
197
198
  **props,
198
199
  ) -> "Editor":
@@ -6,7 +6,8 @@ import inspect
6
6
  from typing import TYPE_CHECKING, Any, Callable, List, Tuple, Type, Union, get_args
7
7
 
8
8
  from reflex.components.tags.tag import Tag
9
- from reflex.vars import BaseVar, Var
9
+ from reflex.ivars.base import ImmutableVar
10
+ from reflex.vars import Var
10
11
 
11
12
  if TYPE_CHECKING:
12
13
  from reflex.components.component import Component
@@ -33,15 +34,16 @@ class IterTag(Tag):
33
34
  Returns:
34
35
  The type of the iterable var.
35
36
  """
37
+ iterable = self.iterable.upcast()
36
38
  try:
37
- if self.iterable._var_type.mro()[0] == dict:
39
+ if iterable._var_type.mro()[0] == dict:
38
40
  # Arg is a tuple of (key, value).
39
- return Tuple[get_args(self.iterable._var_type)] # type: ignore
40
- elif self.iterable._var_type.mro()[0] == tuple:
41
+ return Tuple[get_args(iterable._var_type)] # type: ignore
42
+ elif iterable._var_type.mro()[0] == tuple:
41
43
  # Arg is a union of any possible values in the tuple.
42
- return Union[get_args(self.iterable._var_type)] # type: ignore
44
+ return Union[get_args(iterable._var_type)] # type: ignore
43
45
  else:
44
- return get_args(self.iterable._var_type)[0]
46
+ return get_args(iterable._var_type)[0]
45
47
  except Exception:
46
48
  return Any
47
49
 
@@ -53,10 +55,10 @@ class IterTag(Tag):
53
55
  Returns:
54
56
  The index var.
55
57
  """
56
- return BaseVar(
58
+ return ImmutableVar(
57
59
  _var_name=self.index_var_name,
58
60
  _var_type=int,
59
- )
61
+ ).guess_type()
60
62
 
61
63
  def get_arg_var(self) -> Var:
62
64
  """Get the arg var for the tag (with curly braces).
@@ -66,10 +68,10 @@ class IterTag(Tag):
66
68
  Returns:
67
69
  The arg var.
68
70
  """
69
- return BaseVar(
71
+ return ImmutableVar(
70
72
  _var_name=self.arg_var_name,
71
73
  _var_type=self.get_iterable_var_type(),
72
- )
74
+ ).guess_type()
73
75
 
74
76
  def get_index_var_arg(self) -> Var:
75
77
  """Get the index var for the tag (without curly braces).
@@ -79,11 +81,10 @@ class IterTag(Tag):
79
81
  Returns:
80
82
  The index var.
81
83
  """
82
- return BaseVar(
84
+ return ImmutableVar(
83
85
  _var_name=self.index_var_name,
84
86
  _var_type=int,
85
- _var_is_local=True,
86
- )
87
+ ).guess_type()
87
88
 
88
89
  def get_arg_var_arg(self) -> Var:
89
90
  """Get the arg var for the tag (without curly braces).
@@ -93,11 +94,10 @@ class IterTag(Tag):
93
94
  Returns:
94
95
  The arg var.
95
96
  """
96
- return BaseVar(
97
+ return ImmutableVar(
97
98
  _var_name=self.arg_var_name,
98
99
  _var_type=self.get_iterable_var_type(),
99
- _var_is_local=True,
100
- )
100
+ ).guess_type()
101
101
 
102
102
  def render_component(self) -> Component:
103
103
  """Render the component.
@@ -6,8 +6,8 @@ from typing import Any, Dict, List, Optional, Set, Tuple, Union
6
6
 
7
7
  from reflex.base import Base
8
8
  from reflex.event import EventChain
9
+ from reflex.ivars.base import ImmutableVar, LiteralVar
9
10
  from reflex.utils import format, types
10
- from reflex.vars import Var
11
11
 
12
12
 
13
13
  class Tag(Base):
@@ -26,7 +26,7 @@ class Tag(Base):
26
26
  args: Optional[Tuple[str, ...]] = None
27
27
 
28
28
  # Special props that aren't key value pairs.
29
- special_props: Set[Var] = set()
29
+ special_props: Set[ImmutableVar] = set()
30
30
 
31
31
  # The children components.
32
32
  children: List[Any] = []
@@ -41,7 +41,7 @@ class Tag(Base):
41
41
  # Convert any props to vars.
42
42
  if "props" in kwargs:
43
43
  kwargs["props"] = {
44
- name: Var.create(value, _var_is_string=False)
44
+ name: LiteralVar.create(value)
45
45
  for name, value in kwargs["props"].items()
46
46
  }
47
47
  super().__init__(*args, **kwargs)
@@ -63,14 +63,12 @@ class Tag(Base):
63
63
  Returns:
64
64
  The tag with the props added.
65
65
  """
66
- from reflex.components.core.colors import Color
67
-
68
66
  self.props.update(
69
67
  {
70
- format.to_camel_case(name, allow_hyphens=True): prop
71
- if types._isinstance(prop, Union[EventChain, dict])
72
- else Var.create(
73
- prop, _var_is_string=isinstance(prop, Color)
68
+ format.to_camel_case(name, allow_hyphens=True): (
69
+ prop
70
+ if types._isinstance(prop, Union[EventChain, dict])
71
+ else LiteralVar.create(prop)
74
72
  ) # rx.color is always a string
75
73
  for name, prop in kwargs.items()
76
74
  if self.is_valid_prop(prop)
@@ -94,7 +92,7 @@ class Tag(Base):
94
92
  return self
95
93
 
96
94
  @staticmethod
97
- def is_valid_prop(prop: Optional[Var]) -> bool:
95
+ def is_valid_prop(prop: Optional[ImmutableVar]) -> bool:
98
96
  """Check if the prop is valid.
99
97
 
100
98
  Args:
reflex/constants/base.py CHANGED
@@ -45,6 +45,8 @@ class Dirs(SimpleNamespace):
45
45
  REFLEX_JSON = "reflex.json"
46
46
  # The name of the postcss config file.
47
47
  POSTCSS_JS = "postcss.config.js"
48
+ # The name of the states directory.
49
+ STATES = "states"
48
50
 
49
51
 
50
52
  class Reflex(SimpleNamespace):
@@ -103,7 +105,7 @@ class Templates(SimpleNamespace):
103
105
 
104
106
  # The reflex.build backend host
105
107
  REFLEX_BUILD_BACKEND = os.environ.get(
106
- "REFLEX_BUILD_BACKEND", "https://rxh-prod-flexgen.fly.dev"
108
+ "REFLEX_BUILD_BACKEND", "https://flexgen-prod-flexgen.fly.dev"
107
109
  )
108
110
 
109
111
  # The URL to redirect to reflex.build
reflex/constants/event.py CHANGED
@@ -11,6 +11,7 @@ class Endpoint(Enum):
11
11
  EVENT = "_event"
12
12
  UPLOAD = "_upload"
13
13
  AUTH_CODESPACE = "auth-codespace"
14
+ HEALTH = "_health"
14
15
 
15
16
  def __str__(self) -> str:
16
17
  """Get the string representation of the endpoint.