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
@@ -17,29 +17,26 @@ from reflex.components.radix.themes.typography.heading import Heading
17
17
  from reflex.components.radix.themes.typography.link import Link
18
18
  from reflex.components.radix.themes.typography.text import Text
19
19
  from reflex.components.tags.tag import Tag
20
+ from reflex.ivars.base import ImmutableVar, LiteralVar
20
21
  from reflex.utils import types
21
22
  from reflex.utils.imports import ImportDict, ImportVar
22
- from reflex.vars import Var
23
23
 
24
24
  # Special vars used in the component map.
25
- _CHILDREN = Var.create_safe("children", _var_is_local=False, _var_is_string=False)
26
- _PROPS = Var.create_safe("...props", _var_is_local=False, _var_is_string=False)
27
- _MOCK_ARG = Var.create_safe("", _var_is_string=False)
25
+ _CHILDREN = ImmutableVar.create_safe("children")
26
+ _PROPS = ImmutableVar.create_safe("...props")
27
+ _PROPS_IN_TAG = ImmutableVar.create_safe("{...props}")
28
+ _MOCK_ARG = ImmutableVar.create_safe("")
28
29
 
29
30
  # Special remark plugins.
30
- _REMARK_MATH = Var.create_safe("remarkMath", _var_is_local=False, _var_is_string=False)
31
- _REMARK_GFM = Var.create_safe("remarkGfm", _var_is_local=False, _var_is_string=False)
32
- _REMARK_UNWRAP_IMAGES = Var.create_safe(
33
- "remarkUnwrapImages", _var_is_local=False, _var_is_string=False
34
- )
35
- _REMARK_PLUGINS = Var.create_safe([_REMARK_MATH, _REMARK_GFM, _REMARK_UNWRAP_IMAGES])
31
+ _REMARK_MATH = ImmutableVar.create_safe("remarkMath")
32
+ _REMARK_GFM = ImmutableVar.create_safe("remarkGfm")
33
+ _REMARK_UNWRAP_IMAGES = ImmutableVar.create_safe("remarkUnwrapImages")
34
+ _REMARK_PLUGINS = LiteralVar.create([_REMARK_MATH, _REMARK_GFM, _REMARK_UNWRAP_IMAGES])
36
35
 
37
36
  # Special rehype plugins.
38
- _REHYPE_KATEX = Var.create_safe(
39
- "rehypeKatex", _var_is_local=False, _var_is_string=False
40
- )
41
- _REHYPE_RAW = Var.create_safe("rehypeRaw", _var_is_local=False, _var_is_string=False)
42
- _REHYPE_PLUGINS = Var.create_safe([_REHYPE_KATEX, _REHYPE_RAW])
37
+ _REHYPE_KATEX = ImmutableVar.create_safe("rehypeKatex")
38
+ _REHYPE_RAW = ImmutableVar.create_safe("rehypeRaw")
39
+ _REHYPE_PLUGINS = LiteralVar.create([_REHYPE_KATEX, _REHYPE_RAW])
43
40
 
44
41
  # These tags do NOT get props passed to them
45
42
  NO_PROPS_TAGS = ("ul", "ol", "li")
@@ -102,7 +99,8 @@ class Markdown(Component):
102
99
  The markdown component.
103
100
  """
104
101
  assert (
105
- len(children) == 1 and types._isinstance(children[0], Union[str, Var])
102
+ len(children) == 1
103
+ and types._isinstance(children[0], Union[str, ImmutableVar])
106
104
  ), "Markdown component must have exactly one child containing the markdown source."
107
105
 
108
106
  # Update the base component map with the custom component map.
@@ -173,7 +171,7 @@ class Markdown(Component):
173
171
  ),
174
172
  },
175
173
  *[
176
- component(_MOCK_ARG)._get_imports() # type: ignore
174
+ component(_MOCK_ARG)._get_all_imports() # type: ignore
177
175
  for component in self.component_map.values()
178
176
  ],
179
177
  CodeBlock.create(theme="light")._get_imports(), # type: ignore,
@@ -197,7 +195,7 @@ class Markdown(Component):
197
195
  if tag not in self.component_map:
198
196
  raise ValueError(f"No markdown component found for tag: {tag}.")
199
197
 
200
- special_props = {_PROPS}
198
+ special_props = {_PROPS_IN_TAG}
201
199
  children = [_CHILDREN]
202
200
 
203
201
  # For certain tags, the props from the markdown renderer are not actually valid for the component.
@@ -208,10 +206,9 @@ class Markdown(Component):
208
206
  children_prop = props.pop("children", None)
209
207
  if children_prop is not None:
210
208
  special_props.add(
211
- Var.create_safe(f"children={str(children_prop)}", _var_is_string=False)
209
+ ImmutableVar.create_safe(f"children={{{str(children_prop)}}}")
212
210
  )
213
211
  children = []
214
-
215
212
  # Get the component.
216
213
  component = self.component_map[tag](*children, **props).set(
217
214
  special_props=special_props
@@ -230,21 +227,22 @@ class Markdown(Component):
230
227
  """
231
228
  return str(self.get_component(tag, **props)).replace("\n", "")
232
229
 
233
- def format_component_map(self) -> dict[str, str]:
230
+ def format_component_map(self) -> dict[str, ImmutableVar]:
234
231
  """Format the component map for rendering.
235
232
 
236
233
  Returns:
237
234
  The formatted component map.
238
235
  """
239
236
  components = {
240
- tag: f"{{({{node, {_CHILDREN._var_name}, {_PROPS._var_name}}}) => {self.format_component(tag)}}}"
237
+ tag: ImmutableVar.create_safe(
238
+ f"(({{node, {_CHILDREN._var_name}, {_PROPS._var_name}}}) => ({self.format_component(tag)}))"
239
+ )
241
240
  for tag in self.component_map
242
241
  }
243
242
 
244
243
  # Separate out inline code and code blocks.
245
- components[
246
- "code"
247
- ] = f"""{{({{node, inline, className, {_CHILDREN._var_name}, {_PROPS._var_name}}}) => {{
244
+ components["code"] = ImmutableVar.create_safe(
245
+ f"""(({{node, inline, className, {_CHILDREN._var_name}, {_PROPS._var_name}}}) => {{
248
246
  const match = (className || '').match(/language-(?<lang>.*)/);
249
247
  const language = match ? match[1] : '';
250
248
  if (language) {{
@@ -260,9 +258,10 @@ class Markdown(Component):
260
258
  return inline ? (
261
259
  {self.format_component("code")}
262
260
  ) : (
263
- {self.format_component("codeblock", language=Var.create_safe("language", _var_is_local=False, _var_is_string=False))}
261
+ {self.format_component("codeblock", language=ImmutableVar.create_safe("language"))}
264
262
  );
265
- }}}}""".replace("\n", " ")
263
+ }})""".replace("\n", " ")
264
+ )
266
265
 
267
266
  return components
268
267
 
@@ -287,7 +286,7 @@ class Markdown(Component):
287
286
  function {self._get_component_map_name()} () {{
288
287
  {formatted_hooks}
289
288
  return (
290
- {str(Var.create(self.format_component_map()))}
289
+ {str(LiteralVar.create(self.format_component_map()))}
291
290
  )
292
291
  }}
293
292
  """
@@ -299,14 +298,10 @@ class Markdown(Component):
299
298
  .add_props(
300
299
  remark_plugins=_REMARK_PLUGINS,
301
300
  rehype_plugins=_REHYPE_PLUGINS,
301
+ components=ImmutableVar.create_safe(
302
+ f"{self._get_component_map_name()}()"
303
+ ),
302
304
  )
303
305
  .remove_props("componentMap", "componentMapHash")
304
306
  )
305
- tag.special_props.add(
306
- Var.create_safe(
307
- f"components={{{self._get_component_map_name()}()}}",
308
- _var_is_local=True,
309
- _var_is_string=False,
310
- ),
311
- )
312
307
  return tag
@@ -8,24 +8,21 @@ from typing import Any, Callable, Dict, Optional, Union, overload
8
8
 
9
9
  from reflex.components.component import Component
10
10
  from reflex.event import EventHandler, EventSpec
11
+ from reflex.ivars.base import ImmutableVar, LiteralVar
11
12
  from reflex.style import Style
12
13
  from reflex.utils.imports import ImportDict
13
- from reflex.vars import BaseVar, Var
14
14
 
15
- _CHILDREN = Var.create_safe("children", _var_is_local=False, _var_is_string=False)
16
- _PROPS = Var.create_safe("...props", _var_is_local=False, _var_is_string=False)
17
- _MOCK_ARG = Var.create_safe("", _var_is_string=False)
18
- _REMARK_MATH = Var.create_safe("remarkMath", _var_is_local=False, _var_is_string=False)
19
- _REMARK_GFM = Var.create_safe("remarkGfm", _var_is_local=False, _var_is_string=False)
20
- _REMARK_UNWRAP_IMAGES = Var.create_safe(
21
- "remarkUnwrapImages", _var_is_local=False, _var_is_string=False
22
- )
23
- _REMARK_PLUGINS = Var.create_safe([_REMARK_MATH, _REMARK_GFM, _REMARK_UNWRAP_IMAGES])
24
- _REHYPE_KATEX = Var.create_safe(
25
- "rehypeKatex", _var_is_local=False, _var_is_string=False
26
- )
27
- _REHYPE_RAW = Var.create_safe("rehypeRaw", _var_is_local=False, _var_is_string=False)
28
- _REHYPE_PLUGINS = Var.create_safe([_REHYPE_KATEX, _REHYPE_RAW])
15
+ _CHILDREN = ImmutableVar.create_safe("children")
16
+ _PROPS = ImmutableVar.create_safe("...props")
17
+ _PROPS_IN_TAG = ImmutableVar.create_safe("{...props}")
18
+ _MOCK_ARG = ImmutableVar.create_safe("")
19
+ _REMARK_MATH = ImmutableVar.create_safe("remarkMath")
20
+ _REMARK_GFM = ImmutableVar.create_safe("remarkGfm")
21
+ _REMARK_UNWRAP_IMAGES = ImmutableVar.create_safe("remarkUnwrapImages")
22
+ _REMARK_PLUGINS = LiteralVar.create([_REMARK_MATH, _REMARK_GFM, _REMARK_UNWRAP_IMAGES])
23
+ _REHYPE_KATEX = ImmutableVar.create_safe("rehypeKatex")
24
+ _REHYPE_RAW = ImmutableVar.create_safe("rehypeRaw")
25
+ _REHYPE_PLUGINS = LiteralVar.create([_REHYPE_KATEX, _REHYPE_RAW])
29
26
  NO_PROPS_TAGS = ("ul", "ol", "li")
30
27
 
31
28
  @lru_cache
@@ -44,51 +41,51 @@ class Markdown(Component):
44
41
  id: Optional[Any] = None,
45
42
  class_name: Optional[Any] = None,
46
43
  autofocus: Optional[bool] = None,
47
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
44
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
48
45
  on_blur: Optional[
49
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
46
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
50
47
  ] = None,
51
48
  on_click: Optional[
52
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
49
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
53
50
  ] = None,
54
51
  on_context_menu: Optional[
55
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
52
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
56
53
  ] = None,
57
54
  on_double_click: Optional[
58
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
55
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
59
56
  ] = None,
60
57
  on_focus: Optional[
61
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
58
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
62
59
  ] = None,
63
60
  on_mount: Optional[
64
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
61
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
65
62
  ] = None,
66
63
  on_mouse_down: Optional[
67
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
64
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
68
65
  ] = None,
69
66
  on_mouse_enter: Optional[
70
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
67
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
71
68
  ] = None,
72
69
  on_mouse_leave: Optional[
73
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
70
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
74
71
  ] = None,
75
72
  on_mouse_move: Optional[
76
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
73
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
77
74
  ] = None,
78
75
  on_mouse_out: Optional[
79
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
76
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
80
77
  ] = None,
81
78
  on_mouse_over: Optional[
82
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
79
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
83
80
  ] = None,
84
81
  on_mouse_up: Optional[
85
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
82
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
86
83
  ] = None,
87
84
  on_scroll: Optional[
88
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
85
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
89
86
  ] = None,
90
87
  on_unmount: Optional[
91
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
88
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
92
89
  ] = None,
93
90
  **props,
94
91
  ) -> "Markdown":
@@ -114,4 +111,4 @@ class Markdown(Component):
114
111
  def add_imports(self) -> ImportDict | list[ImportDict]: ...
115
112
  def get_component(self, tag: str, **props) -> Component: ...
116
113
  def format_component(self, tag: str, **props) -> str: ...
117
- def format_component_map(self) -> dict[str, str]: ...
114
+ def format_component_map(self) -> dict[str, ImmutableVar]: ...
@@ -8,9 +8,10 @@ from typing import Any, Callable, Dict, Optional, Union, overload
8
8
  from reflex.base import Base
9
9
  from reflex.components.component import NoSSRComponent
10
10
  from reflex.event import EventHandler, EventSpec
11
+ from reflex.ivars.base import ImmutableVar
11
12
  from reflex.style import Style
12
13
  from reflex.utils.imports import ImportDict
13
- from reflex.vars import BaseVar, Var
14
+ from reflex.vars import Var
14
15
 
15
16
  class MomentDelta(Base):
16
17
  years: Optional[int]
@@ -55,54 +56,54 @@ class Moment(NoSSRComponent):
55
56
  id: Optional[Any] = None,
56
57
  class_name: Optional[Any] = None,
57
58
  autofocus: Optional[bool] = None,
58
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
59
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
59
60
  on_blur: Optional[
60
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
61
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
61
62
  ] = None,
62
63
  on_change: Optional[
63
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
64
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
64
65
  ] = None,
65
66
  on_click: Optional[
66
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
67
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
67
68
  ] = None,
68
69
  on_context_menu: Optional[
69
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
70
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
70
71
  ] = None,
71
72
  on_double_click: Optional[
72
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
73
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
73
74
  ] = None,
74
75
  on_focus: Optional[
75
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
76
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
76
77
  ] = None,
77
78
  on_mount: Optional[
78
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
79
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
79
80
  ] = None,
80
81
  on_mouse_down: Optional[
81
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
82
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
82
83
  ] = None,
83
84
  on_mouse_enter: Optional[
84
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
85
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
85
86
  ] = None,
86
87
  on_mouse_leave: Optional[
87
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
88
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
88
89
  ] = None,
89
90
  on_mouse_move: Optional[
90
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
91
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
91
92
  ] = None,
92
93
  on_mouse_out: Optional[
93
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
94
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
94
95
  ] = None,
95
96
  on_mouse_over: Optional[
96
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
97
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
97
98
  ] = None,
98
99
  on_mouse_up: Optional[
99
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
100
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
100
101
  ] = None,
101
102
  on_scroll: Optional[
102
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
103
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
103
104
  ] = None,
104
105
  on_unmount: Optional[
105
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
106
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
106
107
  ] = None,
107
108
  **props,
108
109
  ) -> "Moment":
@@ -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
10
11
  from reflex.style import Style
11
- from reflex.vars import BaseVar, Var
12
12
 
13
13
  class NextComponent(Component):
14
14
  ...
@@ -23,51 +23,51 @@ class NextComponent(Component):
23
23
  id: Optional[Any] = None,
24
24
  class_name: Optional[Any] = None,
25
25
  autofocus: Optional[bool] = None,
26
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
26
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
27
27
  on_blur: Optional[
28
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
28
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
29
29
  ] = None,
30
30
  on_click: Optional[
31
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
31
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
32
32
  ] = None,
33
33
  on_context_menu: Optional[
34
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
34
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
35
35
  ] = None,
36
36
  on_double_click: Optional[
37
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
37
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
38
38
  ] = None,
39
39
  on_focus: Optional[
40
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
40
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
41
41
  ] = None,
42
42
  on_mount: Optional[
43
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
43
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
44
44
  ] = None,
45
45
  on_mouse_down: Optional[
46
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
46
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
47
47
  ] = None,
48
48
  on_mouse_enter: Optional[
49
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
49
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
50
50
  ] = None,
51
51
  on_mouse_leave: Optional[
52
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
52
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
53
53
  ] = None,
54
54
  on_mouse_move: Optional[
55
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
55
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
56
56
  ] = None,
57
57
  on_mouse_out: Optional[
58
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
58
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
59
59
  ] = None,
60
60
  on_mouse_over: Optional[
61
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
61
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
62
62
  ] = None,
63
63
  on_mouse_up: Optional[
64
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
64
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
65
65
  ] = None,
66
66
  on_scroll: Optional[
67
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
67
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
68
68
  ] = None,
69
69
  on_unmount: Optional[
70
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
70
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
71
71
  ] = None,
72
72
  **props,
73
73
  ) -> "NextComponent":
@@ -102,8 +102,4 @@ class Image(NextComponent):
102
102
  # mysteriously, following `sizes` prop is needed to avoid blury images.
103
103
  props["sizes"] = "100vw"
104
104
 
105
- src = props.get("src", None)
106
- if src is not None and not isinstance(src, (Var)):
107
- props["src"] = Var.create(value=src, _var_is_string=True)
108
-
109
105
  return super().create(*children, **props)
@@ -6,8 +6,9 @@
6
6
  from typing import Any, Callable, Dict, Literal, Optional, Union, overload
7
7
 
8
8
  from reflex.event import EventHandler, EventSpec
9
+ from reflex.ivars.base import ImmutableVar
9
10
  from reflex.style import Style
10
- from reflex.vars import BaseVar, Var
11
+ from reflex.vars import Var
11
12
 
12
13
  from .base import NextComponent
13
14
 
@@ -36,57 +37,57 @@ class Image(NextComponent):
36
37
  id: Optional[Any] = None,
37
38
  class_name: Optional[Any] = None,
38
39
  autofocus: Optional[bool] = None,
39
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
40
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
40
41
  on_blur: Optional[
41
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
42
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
42
43
  ] = None,
43
44
  on_click: Optional[
44
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
45
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
45
46
  ] = None,
46
47
  on_context_menu: Optional[
47
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
48
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
48
49
  ] = None,
49
50
  on_double_click: Optional[
50
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
51
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
51
52
  ] = None,
52
53
  on_error: Optional[
53
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
54
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
54
55
  ] = None,
55
56
  on_focus: Optional[
56
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
57
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
57
58
  ] = None,
58
59
  on_load: Optional[
59
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
60
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
60
61
  ] = None,
61
62
  on_mount: Optional[
62
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
63
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
63
64
  ] = None,
64
65
  on_mouse_down: Optional[
65
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
66
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
66
67
  ] = None,
67
68
  on_mouse_enter: Optional[
68
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
69
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
69
70
  ] = None,
70
71
  on_mouse_leave: Optional[
71
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
72
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
72
73
  ] = None,
73
74
  on_mouse_move: Optional[
74
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
75
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
75
76
  ] = None,
76
77
  on_mouse_out: Optional[
77
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
78
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
78
79
  ] = None,
79
80
  on_mouse_over: Optional[
80
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
81
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
81
82
  ] = None,
82
83
  on_mouse_up: Optional[
83
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
84
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
84
85
  ] = None,
85
86
  on_scroll: Optional[
86
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
87
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
87
88
  ] = None,
88
89
  on_unmount: Optional[
89
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
90
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
90
91
  ] = None,
91
92
  **props,
92
93
  ) -> "Image":
@@ -7,8 +7,9 @@ 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
10
11
  from reflex.style import Style
11
- from reflex.vars import BaseVar, Var
12
+ from reflex.vars import Var
12
13
 
13
14
  class NextLink(Component):
14
15
  @overload
@@ -23,51 +24,51 @@ class NextLink(Component):
23
24
  id: Optional[Any] = None,
24
25
  class_name: Optional[Any] = None,
25
26
  autofocus: Optional[bool] = None,
26
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
27
+ custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
27
28
  on_blur: Optional[
28
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
29
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
29
30
  ] = None,
30
31
  on_click: Optional[
31
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
32
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
32
33
  ] = None,
33
34
  on_context_menu: Optional[
34
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
35
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
35
36
  ] = None,
36
37
  on_double_click: Optional[
37
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
38
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
38
39
  ] = None,
39
40
  on_focus: Optional[
40
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
41
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
41
42
  ] = None,
42
43
  on_mount: Optional[
43
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
44
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
44
45
  ] = None,
45
46
  on_mouse_down: Optional[
46
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
47
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
47
48
  ] = None,
48
49
  on_mouse_enter: Optional[
49
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
50
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
50
51
  ] = None,
51
52
  on_mouse_leave: Optional[
52
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
53
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
53
54
  ] = None,
54
55
  on_mouse_move: Optional[
55
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
56
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
56
57
  ] = None,
57
58
  on_mouse_out: Optional[
58
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
59
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
59
60
  ] = None,
60
61
  on_mouse_over: Optional[
61
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
62
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
62
63
  ] = None,
63
64
  on_mouse_up: Optional[
64
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
65
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
65
66
  ] = None,
66
67
  on_scroll: Optional[
67
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
68
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
68
69
  ] = None,
69
70
  on_unmount: Optional[
70
- Union[EventHandler, EventSpec, list, Callable, BaseVar]
71
+ Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
71
72
  ] = None,
72
73
  **props,
73
74
  ) -> "NextLink":