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
@@ -8,11 +8,11 @@ version = "0.0.1"
8
8
  description = "Reflex custom component {{ module_name }}"
9
9
  readme = "README.md"
10
10
  license = { text = "Apache-2.0" }
11
- requires-python = ">=3.8"
11
+ requires-python = ">=3.10"
12
12
  authors = [{ name = "", email = "YOUREMAIL@domain.com" }]
13
13
  keywords = ["reflex","reflex-custom-components"]
14
14
 
15
- dependencies = ["reflex>=0.4.2"]
15
+ dependencies = ["reflex>={{ reflex_version }}"]
16
16
 
17
17
  classifiers = ["Development Status :: 4 - Beta"]
18
18
 
@@ -27,7 +27,7 @@ function AppWrap({children}) {
27
27
 
28
28
  export default function MyApp({ Component, pageProps }) {
29
29
  return (
30
- <ThemeProvider defaultTheme={ defaultColorMode } storageKey="chakra-ui-color-mode" attribute="class">
30
+ <ThemeProvider defaultTheme={ defaultColorMode } attribute="class">
31
31
  <AppWrap>
32
32
  <StateProvider>
33
33
  <EventLoopProvider>
@@ -85,10 +85,10 @@
85
85
  {% macro render_match_tag(component) %}
86
86
  {
87
87
  (() => {
88
- switch (JSON.stringify({{ component.cond._var_name }})) {
88
+ switch (JSON.stringify({{ component.cond._js_expr }})) {
89
89
  {% for case in component.match_cases %}
90
90
  {% for condition in case[:-1] %}
91
- case JSON.stringify({{ condition._var_name }}):
91
+ case JSON.stringify({{ condition._js_expr }}):
92
92
  {% endfor %}
93
93
  return {{ case[-1] }};
94
94
  break;
reflex/__init__.py CHANGED
@@ -206,6 +206,13 @@ RADIX_PRIMITIVES_MAPPING: dict = {
206
206
  "components.radix.primitives.form": [
207
207
  "form",
208
208
  ],
209
+ "components.radix.primitives.progress": [
210
+ "progress",
211
+ ],
212
+ }
213
+
214
+ RADIX_PRIMITIVES_SHORTCUT_MAPPING: dict = {
215
+ k: v for k, v in RADIX_PRIMITIVES_MAPPING.items() if "progress" not in k
209
216
  }
210
217
 
211
218
  COMPONENTS_CORE_MAPPING: dict = {
@@ -248,7 +255,7 @@ RADIX_MAPPING: dict = {
248
255
  **RADIX_THEMES_COMPONENTS_MAPPING,
249
256
  **RADIX_THEMES_TYPOGRAPHY_MAPPING,
250
257
  **RADIX_THEMES_LAYOUT_MAPPING,
251
- **RADIX_PRIMITIVES_MAPPING,
258
+ **RADIX_PRIMITIVES_SHORTCUT_MAPPING,
252
259
  }
253
260
 
254
261
  _MAPPING: dict = {
@@ -338,7 +345,6 @@ _SUBMODULES: set[str] = {
338
345
  "testing",
339
346
  "utils",
340
347
  "vars",
341
- "ivars",
342
348
  "config",
343
349
  "compiler",
344
350
  }
reflex/__init__.pyi CHANGED
@@ -12,7 +12,6 @@ from . import compiler as compiler
12
12
  from . import components as components
13
13
  from . import config as config
14
14
  from . import event as event
15
- from . import ivars as ivars
16
15
  from . import model as model
17
16
  from . import style as style
18
17
  from . import testing as testing
@@ -132,6 +131,7 @@ from .components.radix.themes.layout.container import container as container
132
131
  from .components.radix.themes.layout.flex import flex as flex
133
132
  from .components.radix.themes.layout.grid import grid as grid
134
133
  from .components.radix.themes.layout.list import list_item as list_item
134
+ from .components.radix.themes.layout.list import list_ns as list # noqa
135
135
  from .components.radix.themes.layout.list import ordered_list as ordered_list
136
136
  from .components.radix.themes.layout.list import unordered_list as unordered_list
137
137
  from .components.radix.themes.layout.section import section as section
@@ -197,6 +197,7 @@ RADIX_THEMES_COMPONENTS_MAPPING: dict
197
197
  RADIX_THEMES_LAYOUT_MAPPING: dict
198
198
  RADIX_THEMES_TYPOGRAPHY_MAPPING: dict
199
199
  RADIX_PRIMITIVES_MAPPING: dict
200
+ RADIX_PRIMITIVES_SHORTCUT_MAPPING: dict
200
201
  COMPONENTS_CORE_MAPPING: dict
201
202
  COMPONENTS_BASE_MAPPING: dict
202
203
  RADIX_MAPPING: dict
reflex/app.py CHANGED
@@ -9,6 +9,7 @@ import copy
9
9
  import functools
10
10
  import inspect
11
11
  import io
12
+ import json
12
13
  import multiprocessing
13
14
  import os
14
15
  import platform
@@ -605,7 +606,10 @@ class App(MiddlewareMixin, LifespanMixin, Base):
605
606
  for route in self.pages:
606
607
  replaced_route = replace_brackets_with_keywords(route)
607
608
  for rw, r, nr in zip(
608
- replaced_route.split("/"), route.split("/"), new_route.split("/")
609
+ replaced_route.split("/"),
610
+ route.split("/"),
611
+ new_route.split("/"),
612
+ strict=False,
609
613
  ):
610
614
  if rw in segments and r != nr:
611
615
  # If the slugs in the segments of both routes are not the same, then the route is invalid
@@ -823,7 +827,7 @@ class App(MiddlewareMixin, LifespanMixin, Base):
823
827
  for dep in deps:
824
828
  if dep not in state.vars and dep not in state.backend_vars:
825
829
  raise exceptions.VarDependencyError(
826
- f"ComputedVar {var._var_name} on state {state.__name__} has an invalid dependency {dep}"
830
+ f"ComputedVar {var._js_expr} on state {state.__name__} has an invalid dependency {dep}"
827
831
  )
828
832
 
829
833
  for substate in state.class_subclasses:
@@ -954,7 +958,7 @@ class App(MiddlewareMixin, LifespanMixin, Base):
954
958
 
955
959
  # Prepopulate the global ExecutorSafeFunctions class with input data required by the compile functions.
956
960
  # This is required for multiprocessing to work, in presence of non-picklable inputs.
957
- for route, component in zip(self.pages, page_components):
961
+ for route, component in zip(self.pages, page_components, strict=False):
958
962
  ExecutorSafeFunctions.COMPILE_PAGE_ARGS_BY_ROUTE[route] = (
959
963
  route,
960
964
  component,
@@ -1168,6 +1172,7 @@ class App(MiddlewareMixin, LifespanMixin, Base):
1168
1172
  FRONTEND_ARG_SPEC,
1169
1173
  BACKEND_ARG_SPEC,
1170
1174
  ],
1175
+ strict=False,
1171
1176
  ):
1172
1177
  if hasattr(handler_fn, "__name__"):
1173
1178
  _fn_name = handler_fn.__name__
@@ -1531,8 +1536,9 @@ class EventNamespace(AsyncNamespace):
1531
1536
  sid: The Socket.IO session id.
1532
1537
  data: The event data.
1533
1538
  """
1539
+ fields = json.loads(data)
1534
1540
  # Get the event.
1535
- event = Event.parse_raw(data)
1541
+ event = Event(**{k: v for k, v in fields.items() if k != "handler"})
1536
1542
 
1537
1543
  self.token_to_sid[event.token] = sid
1538
1544
  self.sid_to_token[sid] = event.token
reflex/base.py CHANGED
@@ -110,7 +110,7 @@ class Base(BaseModel): # pyright: ignore [reportUnboundVariable]
110
110
  var: The variable to add a pydantic field for.
111
111
  default_value: The default value of the field
112
112
  """
113
- var_name = var._var_name.split(".")[-1]
113
+ var_name = var._js_expr.split(".")[-1]
114
114
  new_field = ModelField.infer(
115
115
  name=var_name,
116
116
  value=default_value,
@@ -17,12 +17,12 @@ from reflex.components.component import (
17
17
  StatefulComponent,
18
18
  )
19
19
  from reflex.config import get_config
20
- from reflex.ivars.base import ImmutableVar, LiteralVar
21
20
  from reflex.state import BaseState
22
21
  from reflex.style import SYSTEM_COLOR_MODE
23
22
  from reflex.utils.exec import is_prod_mode
24
23
  from reflex.utils.imports import ImportVar
25
24
  from reflex.utils.prerequisites import get_web_dir
25
+ from reflex.vars.base import LiteralVar, Var
26
26
 
27
27
 
28
28
  def _compile_document_root(root: Component) -> str:
@@ -320,7 +320,7 @@ def _compile_tailwind(
320
320
  def compile_document_root(
321
321
  head_components: list[Component],
322
322
  html_lang: Optional[str] = None,
323
- html_custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
323
+ html_custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
324
324
  ) -> tuple[str, str]:
325
325
  """Compile the document root.
326
326
 
reflex/compiler/utils.py CHANGED
@@ -7,8 +7,8 @@ from pathlib import Path
7
7
  from typing import Any, Callable, Dict, Optional, Type, Union
8
8
  from urllib.parse import urlparse
9
9
 
10
- from reflex.ivars.base import ImmutableVar
11
10
  from reflex.utils.prerequisites import get_web_dir
11
+ from reflex.vars.base import Var
12
12
 
13
13
  try:
14
14
  from pydantic.v1.fields import ModelField
@@ -268,7 +268,7 @@ def compile_custom_component(
268
268
  }
269
269
 
270
270
  # Concatenate the props.
271
- props = [prop._var_name for prop in component.get_prop_vars()]
271
+ props = [prop._js_expr for prop in component.get_prop_vars()]
272
272
 
273
273
  # Compile the component.
274
274
  return (
@@ -286,7 +286,7 @@ def compile_custom_component(
286
286
  def create_document_root(
287
287
  head_components: list[Component] | None = None,
288
288
  html_lang: Optional[str] = None,
289
- html_custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
289
+ html_custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
290
290
  ) -> Component:
291
291
  """Create the document root.
292
292
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  from reflex.components.base.fragment import Fragment
4
4
  from reflex.components.component import Component
5
- from reflex.ivars.base import ImmutableVar
5
+ from reflex.vars.base import Var
6
6
 
7
7
 
8
8
  class AppWrap(Fragment):
@@ -15,4 +15,4 @@ class AppWrap(Fragment):
15
15
  Returns:
16
16
  A new AppWrap component containing {children}.
17
17
  """
18
- return super().create(ImmutableVar.create("children"))
18
+ return super().create(Var(_js_expr="children"))
@@ -7,8 +7,8 @@ from typing import Any, Callable, Dict, Optional, Union, overload
7
7
 
8
8
  from reflex.components.base.fragment import Fragment
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 AppWrap(Fragment):
14
14
  @overload
@@ -21,51 +21,41 @@ class AppWrap(Fragment):
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
  ) -> "AppWrap":
@@ -7,8 +7,7 @@ from typing import Any, Iterator
7
7
  from reflex.components.component import Component
8
8
  from reflex.components.tags import Tag
9
9
  from reflex.components.tags.tagless import Tagless
10
- from reflex.ivars.base import ImmutableVar
11
- from reflex.vars import Var
10
+ from reflex.vars.base import Var
12
11
 
13
12
 
14
13
  class Bare(Component):
@@ -26,18 +25,18 @@ class Bare(Component):
26
25
  Returns:
27
26
  The component.
28
27
  """
29
- if isinstance(contents, ImmutableVar):
28
+ if isinstance(contents, Var):
30
29
  return cls(contents=contents)
31
30
  else:
32
31
  contents = str(contents) if contents is not None else ""
33
32
  return cls(contents=contents) # type: ignore
34
33
 
35
34
  def _render(self) -> Tag:
36
- if isinstance(self.contents, ImmutableVar):
35
+ if isinstance(self.contents, Var):
37
36
  return Tagless(contents=f"{{{str(self.contents)}}}")
38
37
  return Tagless(contents=str(self.contents))
39
38
 
40
- def _get_vars(self, include_children: bool = False) -> Iterator[ImmutableVar]:
39
+ def _get_vars(self, include_children: bool = False) -> Iterator[Var]:
41
40
  """Walk all Vars used in this component.
42
41
 
43
42
  Args:
@@ -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 Body(Component):
14
14
  @overload
@@ -21,51 +21,41 @@ class Body(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
  ) -> "Body":