reflex 0.6.2.post1__py3-none-any.whl → 0.6.3__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 (178) hide show
  1. reflex/__init__.py +3 -2
  2. reflex/__init__.pyi +3 -1
  3. reflex/components/base/app_wrap.pyi +17 -37
  4. reflex/components/base/body.pyi +17 -37
  5. reflex/components/base/document.pyi +77 -177
  6. reflex/components/base/error_boundary.pyi +18 -38
  7. reflex/components/base/fragment.pyi +17 -37
  8. reflex/components/base/head.pyi +32 -72
  9. reflex/components/base/link.pyi +32 -72
  10. reflex/components/base/meta.pyi +62 -142
  11. reflex/components/base/script.py +4 -4
  12. reflex/components/base/script.pyi +20 -40
  13. reflex/components/component.py +30 -19
  14. reflex/components/core/banner.pyi +77 -177
  15. reflex/components/core/client_side_routing.pyi +32 -72
  16. reflex/components/core/clipboard.py +3 -3
  17. reflex/components/core/clipboard.pyi +18 -38
  18. reflex/components/core/debounce.py +2 -2
  19. reflex/components/core/debounce.pyi +18 -38
  20. reflex/components/core/html.pyi +17 -37
  21. reflex/components/core/upload.py +4 -5
  22. reflex/components/core/upload.pyi +65 -145
  23. reflex/components/datadisplay/code.pyi +32 -72
  24. reflex/components/datadisplay/dataeditor.py +13 -13
  25. reflex/components/datadisplay/dataeditor.pyi +33 -83
  26. reflex/components/dynamic.py +6 -7
  27. reflex/components/el/__init__.pyi +1 -0
  28. reflex/components/el/element.pyi +17 -37
  29. reflex/components/el/elements/base.pyi +17 -37
  30. reflex/components/el/elements/forms.py +29 -14
  31. reflex/components/el/elements/forms.pyi +222 -504
  32. reflex/components/el/elements/inline.pyi +422 -982
  33. reflex/components/el/elements/media.pyi +377 -877
  34. reflex/components/el/elements/metadata.pyi +92 -212
  35. reflex/components/el/elements/other.pyi +107 -247
  36. reflex/components/el/elements/scripts.pyi +47 -107
  37. reflex/components/el/elements/sectioning.pyi +227 -527
  38. reflex/components/el/elements/tables.pyi +152 -352
  39. reflex/components/el/elements/typography.pyi +227 -527
  40. reflex/components/gridjs/datatable.py +2 -2
  41. reflex/components/gridjs/datatable.pyi +32 -72
  42. reflex/components/lucide/icon.pyi +32 -72
  43. reflex/components/markdown/markdown.pyi +16 -36
  44. reflex/components/moment/moment.py +2 -2
  45. reflex/components/moment/moment.pyi +18 -38
  46. reflex/components/next/base.pyi +17 -37
  47. reflex/components/next/image.py +3 -3
  48. reflex/components/next/image.pyi +19 -39
  49. reflex/components/next/link.pyi +17 -37
  50. reflex/components/next/video.pyi +17 -37
  51. reflex/components/plotly/plotly.py +1 -1
  52. reflex/components/plotly/plotly.pyi +35 -87
  53. reflex/components/radix/primitives/accordion.py +14 -2
  54. reflex/components/radix/primitives/accordion.pyi +110 -250
  55. reflex/components/radix/primitives/base.pyi +32 -72
  56. reflex/components/radix/primitives/drawer.py +30 -12
  57. reflex/components/radix/primitives/drawer.pyi +159 -373
  58. reflex/components/radix/primitives/form.py +3 -3
  59. reflex/components/radix/primitives/form.pyi +158 -364
  60. reflex/components/radix/primitives/progress.pyi +77 -177
  61. reflex/components/radix/primitives/slider.py +17 -3
  62. reflex/components/radix/primitives/slider.pyi +81 -183
  63. reflex/components/radix/themes/base.pyi +107 -247
  64. reflex/components/radix/themes/color_mode.pyi +48 -117
  65. reflex/components/radix/themes/components/alert_dialog.py +5 -5
  66. reflex/components/radix/themes/components/alert_dialog.pyi +111 -259
  67. reflex/components/radix/themes/components/aspect_ratio.pyi +17 -37
  68. reflex/components/radix/themes/components/avatar.pyi +17 -37
  69. reflex/components/radix/themes/components/badge.pyi +17 -37
  70. reflex/components/radix/themes/components/button.pyi +17 -37
  71. reflex/components/radix/themes/components/callout.pyi +77 -177
  72. reflex/components/radix/themes/components/card.pyi +17 -37
  73. reflex/components/radix/themes/components/checkbox.py +3 -3
  74. reflex/components/radix/themes/components/checkbox.pyi +50 -110
  75. reflex/components/radix/themes/components/checkbox_cards.pyi +32 -72
  76. reflex/components/radix/themes/components/checkbox_group.pyi +32 -72
  77. reflex/components/radix/themes/components/context_menu.py +11 -11
  78. reflex/components/radix/themes/components/context_menu.pyi +132 -312
  79. reflex/components/radix/themes/components/data_list.pyi +62 -142
  80. reflex/components/radix/themes/components/dialog.py +7 -7
  81. reflex/components/radix/themes/components/dialog.pyi +114 -268
  82. reflex/components/radix/themes/components/dropdown_menu.py +13 -13
  83. reflex/components/radix/themes/components/dropdown_menu.pyi +134 -316
  84. reflex/components/radix/themes/components/hover_card.py +2 -2
  85. reflex/components/radix/themes/components/hover_card.pyi +64 -148
  86. reflex/components/radix/themes/components/icon_button.pyi +17 -37
  87. reflex/components/radix/themes/components/inset.pyi +17 -37
  88. reflex/components/radix/themes/components/popover.py +8 -8
  89. reflex/components/radix/themes/components/popover.pyi +69 -163
  90. reflex/components/radix/themes/components/progress.pyi +17 -37
  91. reflex/components/radix/themes/components/radio.pyi +17 -37
  92. reflex/components/radix/themes/components/radio_cards.py +2 -2
  93. reflex/components/radix/themes/components/radio_cards.pyi +33 -75
  94. reflex/components/radix/themes/components/radio_group.py +4 -4
  95. reflex/components/radix/themes/components/radio_group.pyi +63 -143
  96. reflex/components/radix/themes/components/scroll_area.pyi +17 -37
  97. reflex/components/radix/themes/components/segmented_control.py +14 -2
  98. reflex/components/radix/themes/components/segmented_control.pyi +35 -73
  99. reflex/components/radix/themes/components/select.py +6 -5
  100. reflex/components/radix/themes/components/select.pyi +146 -338
  101. reflex/components/radix/themes/components/separator.pyi +17 -37
  102. reflex/components/radix/themes/components/skeleton.pyi +17 -37
  103. reflex/components/radix/themes/components/slider.py +19 -3
  104. reflex/components/radix/themes/components/slider.pyi +23 -41
  105. reflex/components/radix/themes/components/spinner.pyi +17 -37
  106. reflex/components/radix/themes/components/switch.py +2 -2
  107. reflex/components/radix/themes/components/switch.pyi +18 -38
  108. reflex/components/radix/themes/components/table.pyi +107 -247
  109. reflex/components/radix/themes/components/tabs.py +2 -2
  110. reflex/components/radix/themes/components/tabs.pyi +79 -179
  111. reflex/components/radix/themes/components/text_area.py +0 -16
  112. reflex/components/radix/themes/components/text_area.pyi +20 -42
  113. reflex/components/radix/themes/components/text_field.py +6 -6
  114. reflex/components/radix/themes/components/text_field.pyi +53 -117
  115. reflex/components/radix/themes/components/tooltip.py +4 -4
  116. reflex/components/radix/themes/components/tooltip.pyi +20 -46
  117. reflex/components/radix/themes/layout/base.pyi +17 -37
  118. reflex/components/radix/themes/layout/box.pyi +17 -37
  119. reflex/components/radix/themes/layout/center.pyi +17 -37
  120. reflex/components/radix/themes/layout/container.pyi +17 -37
  121. reflex/components/radix/themes/layout/flex.pyi +17 -37
  122. reflex/components/radix/themes/layout/grid.pyi +17 -37
  123. reflex/components/radix/themes/layout/list.pyi +77 -177
  124. reflex/components/radix/themes/layout/section.pyi +17 -37
  125. reflex/components/radix/themes/layout/spacer.pyi +17 -37
  126. reflex/components/radix/themes/layout/stack.pyi +47 -107
  127. reflex/components/radix/themes/typography/blockquote.pyi +17 -37
  128. reflex/components/radix/themes/typography/code.pyi +17 -37
  129. reflex/components/radix/themes/typography/heading.pyi +17 -37
  130. reflex/components/radix/themes/typography/link.pyi +17 -37
  131. reflex/components/radix/themes/typography/text.pyi +107 -247
  132. reflex/components/react_player/audio.pyi +33 -69
  133. reflex/components/react_player/react_player.py +17 -17
  134. reflex/components/react_player/react_player.pyi +33 -69
  135. reflex/components/react_player/video.pyi +33 -69
  136. reflex/components/recharts/cartesian.py +216 -186
  137. reflex/components/recharts/cartesian.pyi +623 -832
  138. reflex/components/recharts/charts.py +68 -65
  139. reflex/components/recharts/charts.pyi +213 -433
  140. reflex/components/recharts/general.py +27 -21
  141. reflex/components/recharts/general.pyi +94 -189
  142. reflex/components/recharts/polar.py +135 -97
  143. reflex/components/recharts/polar.pyi +219 -229
  144. reflex/components/recharts/recharts.py +5 -1
  145. reflex/components/recharts/recharts.pyi +37 -73
  146. reflex/components/sonner/toast.py +1 -1
  147. reflex/components/sonner/toast.pyi +17 -37
  148. reflex/components/suneditor/editor.pyi +26 -52
  149. reflex/components/tags/iter_tag.py +2 -2
  150. reflex/config.py +16 -0
  151. reflex/constants/__init__.py +2 -0
  152. reflex/constants/compiler.py +25 -0
  153. reflex/constants/installer.py +17 -16
  154. reflex/constants/state.py +11 -0
  155. reflex/constants/style.py +1 -1
  156. reflex/event.py +337 -84
  157. reflex/experimental/layout.pyi +78 -180
  158. reflex/istate/dynamic.py +3 -0
  159. reflex/state.py +197 -118
  160. reflex/style.py +5 -0
  161. reflex/testing.py +8 -5
  162. reflex/utils/compat.py +1 -3
  163. reflex/utils/exceptions.py +8 -0
  164. reflex/utils/path_ops.py +2 -2
  165. reflex/utils/prerequisites.py +2 -2
  166. reflex/utils/pyi_generator.py +44 -4
  167. reflex/utils/registry.py +17 -3
  168. reflex/utils/telemetry.py +1 -3
  169. reflex/utils/types.py +60 -16
  170. reflex/vars/__init__.py +2 -0
  171. reflex/vars/base.py +127 -72
  172. reflex/vars/object.py +5 -1
  173. reflex/vars/sequence.py +15 -3
  174. {reflex-0.6.2.post1.dist-info → reflex-0.6.3.dist-info}/METADATA +3 -3
  175. {reflex-0.6.2.post1.dist-info → reflex-0.6.3.dist-info}/RECORD +178 -176
  176. {reflex-0.6.2.post1.dist-info → reflex-0.6.3.dist-info}/LICENSE +0 -0
  177. {reflex-0.6.2.post1.dist-info → reflex-0.6.3.dist-info}/WHEEL +0 -0
  178. {reflex-0.6.2.post1.dist-info → reflex-0.6.3.dist-info}/entry_points.txt +0 -0
@@ -3,10 +3,10 @@
3
3
  # ------------------- DO NOT EDIT ----------------------
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
- from typing import Any, Callable, Dict, Literal, Optional, Union, overload
6
+ from typing import Any, Dict, Literal, Optional, Union, overload
7
7
 
8
8
  from reflex.components.component import Component, MemoizationLeaf, NoSSRComponent
9
- from reflex.event import EventHandler, EventSpec
9
+ from reflex.event import EventType
10
10
  from reflex.style import Style
11
11
  from reflex.vars.base import Var
12
12
 
@@ -23,41 +23,21 @@ class Recharts(Component):
23
23
  class_name: Optional[Any] = None,
24
24
  autofocus: Optional[bool] = None,
25
25
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
26
- on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
27
- on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
28
- on_context_menu: Optional[
29
- Union[EventHandler, EventSpec, list, Callable, Var]
30
- ] = None,
31
- on_double_click: Optional[
32
- Union[EventHandler, EventSpec, list, Callable, Var]
33
- ] = None,
34
- on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
35
- on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
36
- on_mouse_down: Optional[
37
- Union[EventHandler, EventSpec, list, Callable, Var]
38
- ] = None,
39
- on_mouse_enter: Optional[
40
- Union[EventHandler, EventSpec, list, Callable, Var]
41
- ] = None,
42
- on_mouse_leave: Optional[
43
- Union[EventHandler, EventSpec, list, Callable, Var]
44
- ] = None,
45
- on_mouse_move: Optional[
46
- Union[EventHandler, EventSpec, list, Callable, Var]
47
- ] = None,
48
- on_mouse_out: Optional[
49
- Union[EventHandler, EventSpec, list, Callable, Var]
50
- ] = None,
51
- on_mouse_over: Optional[
52
- Union[EventHandler, EventSpec, list, Callable, Var]
53
- ] = None,
54
- on_mouse_up: Optional[
55
- Union[EventHandler, EventSpec, list, Callable, Var]
56
- ] = None,
57
- on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
58
- on_unmount: Optional[
59
- Union[EventHandler, EventSpec, list, Callable, Var]
60
- ] = None,
26
+ on_blur: Optional[EventType[[]]] = None,
27
+ on_click: Optional[EventType[[]]] = None,
28
+ on_context_menu: Optional[EventType[[]]] = None,
29
+ on_double_click: Optional[EventType[[]]] = None,
30
+ on_focus: Optional[EventType[[]]] = None,
31
+ on_mount: Optional[EventType[[]]] = None,
32
+ on_mouse_down: Optional[EventType[[]]] = None,
33
+ on_mouse_enter: Optional[EventType[[]]] = None,
34
+ on_mouse_leave: Optional[EventType[[]]] = None,
35
+ on_mouse_move: Optional[EventType[[]]] = None,
36
+ on_mouse_out: Optional[EventType[[]]] = None,
37
+ on_mouse_over: Optional[EventType[[]]] = None,
38
+ on_mouse_up: Optional[EventType[[]]] = None,
39
+ on_scroll: Optional[EventType[[]]] = None,
40
+ on_unmount: Optional[EventType[[]]] = None,
61
41
  **props,
62
42
  ) -> "Recharts":
63
43
  """Create the component.
@@ -89,41 +69,21 @@ class RechartsCharts(NoSSRComponent, MemoizationLeaf):
89
69
  class_name: Optional[Any] = None,
90
70
  autofocus: Optional[bool] = None,
91
71
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
92
- on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
93
- on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
94
- on_context_menu: Optional[
95
- Union[EventHandler, EventSpec, list, Callable, Var]
96
- ] = None,
97
- on_double_click: Optional[
98
- Union[EventHandler, EventSpec, list, Callable, Var]
99
- ] = None,
100
- on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
101
- on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
102
- on_mouse_down: Optional[
103
- Union[EventHandler, EventSpec, list, Callable, Var]
104
- ] = None,
105
- on_mouse_enter: Optional[
106
- Union[EventHandler, EventSpec, list, Callable, Var]
107
- ] = None,
108
- on_mouse_leave: Optional[
109
- Union[EventHandler, EventSpec, list, Callable, Var]
110
- ] = None,
111
- on_mouse_move: Optional[
112
- Union[EventHandler, EventSpec, list, Callable, Var]
113
- ] = None,
114
- on_mouse_out: Optional[
115
- Union[EventHandler, EventSpec, list, Callable, Var]
116
- ] = None,
117
- on_mouse_over: Optional[
118
- Union[EventHandler, EventSpec, list, Callable, Var]
119
- ] = None,
120
- on_mouse_up: Optional[
121
- Union[EventHandler, EventSpec, list, Callable, Var]
122
- ] = None,
123
- on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
124
- on_unmount: Optional[
125
- Union[EventHandler, EventSpec, list, Callable, Var]
126
- ] = None,
72
+ on_blur: Optional[EventType[[]]] = None,
73
+ on_click: Optional[EventType[[]]] = None,
74
+ on_context_menu: Optional[EventType[[]]] = None,
75
+ on_double_click: Optional[EventType[[]]] = None,
76
+ on_focus: Optional[EventType[[]]] = None,
77
+ on_mount: Optional[EventType[[]]] = None,
78
+ on_mouse_down: Optional[EventType[[]]] = None,
79
+ on_mouse_enter: Optional[EventType[[]]] = None,
80
+ on_mouse_leave: Optional[EventType[[]]] = None,
81
+ on_mouse_move: Optional[EventType[[]]] = None,
82
+ on_mouse_out: Optional[EventType[[]]] = None,
83
+ on_mouse_over: Optional[EventType[[]]] = None,
84
+ on_mouse_up: Optional[EventType[[]]] = None,
85
+ on_scroll: Optional[EventType[[]]] = None,
86
+ on_unmount: Optional[EventType[[]]] = None,
127
87
  **props,
128
88
  ) -> "RechartsCharts":
129
89
  """Create a new memoization leaf component.
@@ -171,6 +131,7 @@ LiteralScale = Literal[
171
131
  "sequential",
172
132
  "threshold",
173
133
  ]
134
+ LiteralTextAnchor = Literal["start", "middle", "end"]
174
135
  LiteralLayout = Literal["horizontal", "vertical"]
175
136
  LiteralPolarRadiusType = Literal["number", "category"]
176
137
  LiteralGridType = Literal["polygon", "circle"]
@@ -242,6 +203,9 @@ LiteralAreaType = Literal[
242
203
  "stepBefore",
243
204
  "stepAfter",
244
205
  ]
245
- LiteralDirection = Literal["x", "y", "both"]
206
+ LiteralDirection = Literal["x", "y"]
246
207
  LiteralInterval = Literal["preserveStart", "preserveEnd", "preserveStartEnd"]
208
+ LiteralIntervalAxis = Literal[
209
+ "preserveStart", "preserveEnd", "preserveStartEnd", "equidistantPreserveStart"
210
+ ]
247
211
  LiteralSyncMethod = Literal["index", "value"]
@@ -192,7 +192,7 @@ class ToastProps(PropsBase):
192
192
  class Toaster(Component):
193
193
  """A Toaster Component for displaying toast notifications."""
194
194
 
195
- library: str = "sonner@1.4.41"
195
+ library: str = "sonner@1.5.0"
196
196
 
197
197
  tag = "Toaster"
198
198
 
@@ -3,13 +3,13 @@
3
3
  # ------------------- DO NOT EDIT ----------------------
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
- from typing import Any, Callable, ClassVar, Dict, Literal, Optional, Union, overload
6
+ from typing import Any, ClassVar, Dict, Literal, Optional, Union, overload
7
7
 
8
8
  from reflex.base import Base
9
9
  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
- from reflex.event import EventHandler, EventSpec
12
+ from reflex.event import EventSpec, EventType
13
13
  from reflex.style import Style
14
14
  from reflex.utils.serializers import serializer
15
15
  from reflex.vars.base import Var
@@ -121,41 +121,21 @@ class Toaster(Component):
121
121
  class_name: Optional[Any] = None,
122
122
  autofocus: Optional[bool] = None,
123
123
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
124
- on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
125
- on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
126
- on_context_menu: Optional[
127
- Union[EventHandler, EventSpec, list, Callable, Var]
128
- ] = None,
129
- on_double_click: Optional[
130
- Union[EventHandler, EventSpec, list, Callable, Var]
131
- ] = None,
132
- on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
133
- on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
134
- on_mouse_down: Optional[
135
- Union[EventHandler, EventSpec, list, Callable, Var]
136
- ] = None,
137
- on_mouse_enter: Optional[
138
- Union[EventHandler, EventSpec, list, Callable, Var]
139
- ] = None,
140
- on_mouse_leave: Optional[
141
- Union[EventHandler, EventSpec, list, Callable, Var]
142
- ] = None,
143
- on_mouse_move: Optional[
144
- Union[EventHandler, EventSpec, list, Callable, Var]
145
- ] = None,
146
- on_mouse_out: Optional[
147
- Union[EventHandler, EventSpec, list, Callable, Var]
148
- ] = None,
149
- on_mouse_over: Optional[
150
- Union[EventHandler, EventSpec, list, Callable, Var]
151
- ] = None,
152
- on_mouse_up: Optional[
153
- Union[EventHandler, EventSpec, list, Callable, Var]
154
- ] = None,
155
- on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
156
- on_unmount: Optional[
157
- Union[EventHandler, EventSpec, list, Callable, Var]
158
- ] = None,
124
+ on_blur: Optional[EventType[[]]] = None,
125
+ on_click: Optional[EventType[[]]] = None,
126
+ on_context_menu: Optional[EventType[[]]] = None,
127
+ on_double_click: Optional[EventType[[]]] = None,
128
+ on_focus: Optional[EventType[[]]] = None,
129
+ on_mount: Optional[EventType[[]]] = None,
130
+ on_mouse_down: Optional[EventType[[]]] = None,
131
+ on_mouse_enter: Optional[EventType[[]]] = None,
132
+ on_mouse_leave: Optional[EventType[[]]] = None,
133
+ on_mouse_move: Optional[EventType[[]]] = None,
134
+ on_mouse_out: Optional[EventType[[]]] = None,
135
+ on_mouse_over: Optional[EventType[[]]] = None,
136
+ on_mouse_up: Optional[EventType[[]]] = None,
137
+ on_scroll: Optional[EventType[[]]] = None,
138
+ on_unmount: Optional[EventType[[]]] = None,
159
139
  **props,
160
140
  ) -> "Toaster":
161
141
  """Create a toaster component.
@@ -4,11 +4,11 @@
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
6
  import enum
7
- from typing import Any, Callable, Dict, List, Literal, Optional, Union, overload
7
+ from typing import Any, Dict, List, Literal, Optional, Union, overload
8
8
 
9
9
  from reflex.base import Base
10
10
  from reflex.components.component import NoSSRComponent
11
- from reflex.event import EventHandler, EventSpec
11
+ from reflex.event import EventType
12
12
  from reflex.style import Style
13
13
  from reflex.utils.imports import ImportDict
14
14
  from reflex.vars.base import Var
@@ -122,56 +122,30 @@ class Editor(NoSSRComponent):
122
122
  class_name: Optional[Any] = None,
123
123
  autofocus: Optional[bool] = None,
124
124
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
125
- on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
126
- on_change: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
127
- on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
128
- on_context_menu: Optional[
129
- Union[EventHandler, EventSpec, list, Callable, Var]
130
- ] = None,
131
- on_copy: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
132
- on_cut: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
133
- on_double_click: Optional[
134
- Union[EventHandler, EventSpec, list, Callable, Var]
135
- ] = None,
136
- on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
137
- on_input: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
138
- on_load: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
139
- on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
140
- on_mouse_down: Optional[
141
- Union[EventHandler, EventSpec, list, Callable, Var]
142
- ] = None,
143
- on_mouse_enter: Optional[
144
- Union[EventHandler, EventSpec, list, Callable, Var]
145
- ] = None,
146
- on_mouse_leave: Optional[
147
- Union[EventHandler, EventSpec, list, Callable, Var]
148
- ] = None,
149
- on_mouse_move: Optional[
150
- Union[EventHandler, EventSpec, list, Callable, Var]
151
- ] = None,
152
- on_mouse_out: Optional[
153
- Union[EventHandler, EventSpec, list, Callable, Var]
154
- ] = None,
155
- on_mouse_over: Optional[
156
- Union[EventHandler, EventSpec, list, Callable, Var]
157
- ] = None,
158
- on_mouse_up: Optional[
159
- Union[EventHandler, EventSpec, list, Callable, Var]
160
- ] = None,
161
- on_paste: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
162
- on_resize_editor: Optional[
163
- Union[EventHandler, EventSpec, list, Callable, Var]
164
- ] = None,
165
- on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
166
- on_unmount: Optional[
167
- Union[EventHandler, EventSpec, list, Callable, Var]
168
- ] = None,
169
- toggle_code_view: Optional[
170
- Union[EventHandler, EventSpec, list, Callable, Var]
171
- ] = None,
172
- toggle_full_screen: Optional[
173
- Union[EventHandler, EventSpec, list, Callable, Var]
174
- ] = None,
125
+ on_blur: Optional[EventType] = None,
126
+ on_change: Optional[EventType] = None,
127
+ on_click: Optional[EventType[[]]] = None,
128
+ on_context_menu: Optional[EventType[[]]] = None,
129
+ on_copy: Optional[EventType] = None,
130
+ on_cut: Optional[EventType] = None,
131
+ on_double_click: Optional[EventType[[]]] = None,
132
+ on_focus: Optional[EventType[[]]] = None,
133
+ on_input: Optional[EventType] = None,
134
+ on_load: Optional[EventType] = None,
135
+ on_mount: Optional[EventType[[]]] = None,
136
+ on_mouse_down: Optional[EventType[[]]] = None,
137
+ on_mouse_enter: Optional[EventType[[]]] = None,
138
+ on_mouse_leave: Optional[EventType[[]]] = None,
139
+ on_mouse_move: Optional[EventType[[]]] = None,
140
+ on_mouse_out: Optional[EventType[[]]] = None,
141
+ on_mouse_over: Optional[EventType[[]]] = None,
142
+ on_mouse_up: Optional[EventType[[]]] = None,
143
+ on_paste: Optional[EventType] = None,
144
+ on_resize_editor: Optional[EventType] = None,
145
+ on_scroll: Optional[EventType[[]]] = None,
146
+ on_unmount: Optional[EventType[[]]] = None,
147
+ toggle_code_view: Optional[EventType] = None,
148
+ toggle_full_screen: Optional[EventType] = None,
175
149
  **props,
176
150
  ) -> "Editor":
177
151
  """Create an instance of Editor. No children allowed.
@@ -48,10 +48,10 @@ class IterTag(Tag):
48
48
  """
49
49
  iterable = self.iterable
50
50
  try:
51
- if iterable._var_type.mro()[0] == dict:
51
+ if iterable._var_type.mro()[0] is dict:
52
52
  # Arg is a tuple of (key, value).
53
53
  return Tuple[get_args(iterable._var_type)] # type: ignore
54
- elif iterable._var_type.mro()[0] == tuple:
54
+ elif iterable._var_type.mro()[0] is tuple:
55
55
  # Arg is a union of any possible values in the tuple.
56
56
  return Union[get_args(iterable._var_type)] # type: ignore
57
57
  else:
reflex/config.py CHANGED
@@ -9,6 +9,8 @@ import urllib.parse
9
9
  from pathlib import Path
10
10
  from typing import Any, Dict, List, Optional, Set, Union
11
11
 
12
+ from reflex.utils.exceptions import ConfigError
13
+
12
14
  try:
13
15
  import pydantic.v1 as pydantic
14
16
  except ModuleNotFoundError:
@@ -220,6 +222,9 @@ class Config(Base):
220
222
  # Number of gunicorn workers from user
221
223
  gunicorn_workers: Optional[int] = None
222
224
 
225
+ # Indicate which type of state manager to use
226
+ state_manager_mode: constants.StateManagerMode = constants.StateManagerMode.DISK
227
+
223
228
  # Maximum expiration lock time for redis state manager
224
229
  redis_lock_expiration: int = constants.Expiration.LOCK
225
230
 
@@ -235,6 +240,9 @@ class Config(Base):
235
240
  Args:
236
241
  *args: The args to pass to the Pydantic init method.
237
242
  **kwargs: The kwargs to pass to the Pydantic init method.
243
+
244
+ Raises:
245
+ ConfigError: If some values in the config are invalid.
238
246
  """
239
247
  super().__init__(*args, **kwargs)
240
248
 
@@ -248,6 +256,14 @@ class Config(Base):
248
256
  self._non_default_attributes.update(kwargs)
249
257
  self._replace_defaults(**kwargs)
250
258
 
259
+ if (
260
+ self.state_manager_mode == constants.StateManagerMode.REDIS
261
+ and not self.redis_url
262
+ ):
263
+ raise ConfigError(
264
+ "REDIS_URL is required when using the redis state manager."
265
+ )
266
+
251
267
  @property
252
268
  def module(self) -> str:
253
269
  """Get the module name of the app.
@@ -63,6 +63,7 @@ from .route import (
63
63
  RouteRegex,
64
64
  RouteVar,
65
65
  )
66
+ from .state import StateManagerMode
66
67
  from .style import Tailwind
67
68
 
68
69
  __ALL__ = [
@@ -115,6 +116,7 @@ __ALL__ = [
115
116
  SETTER_PREFIX,
116
117
  SKIP_COMPILE_ENV_VAR,
117
118
  SocketEvent,
119
+ StateManagerMode,
118
120
  Tailwind,
119
121
  Templates,
120
122
  CompileVars,
@@ -160,3 +160,28 @@ class MemoizationMode(Base):
160
160
 
161
161
  # Whether children of this component should be memoized first.
162
162
  recursive: bool = True
163
+
164
+
165
+ class SpecialAttributes(enum.Enum):
166
+ """Special attributes for components.
167
+
168
+ These are placed in custom_attrs and rendered as-is rather than converting
169
+ to a style prop.
170
+ """
171
+
172
+ DATA_UNDERSCORE = "data_"
173
+ DATA_DASH = "data-"
174
+ ARIA_UNDERSCORE = "aria_"
175
+ ARIA_DASH = "aria-"
176
+
177
+ @classmethod
178
+ def is_special(cls, attr: str) -> bool:
179
+ """Check if the attribute is special.
180
+
181
+ Args:
182
+ attr: the attribute to check
183
+
184
+ Returns:
185
+ True if the attribute is special.
186
+ """
187
+ return any(attr.startswith(value.value) for value in cls)
@@ -35,7 +35,7 @@ class Bun(SimpleNamespace):
35
35
  """Bun constants."""
36
36
 
37
37
  # The Bun version.
38
- VERSION = "1.1.10"
38
+ VERSION = "1.1.29"
39
39
  # Min Bun Version
40
40
  MIN_VERSION = "0.7.0"
41
41
  # The directory to store the bun.
@@ -44,7 +44,8 @@ class Bun(SimpleNamespace):
44
44
  DEFAULT_PATH = ROOT_PATH / "bin" / ("bun" if not IS_WINDOWS else "bun.exe")
45
45
 
46
46
  # URL to bun install script.
47
- INSTALL_URL = "https://bun.sh/install"
47
+ INSTALL_URL = "https://raw.githubusercontent.com/reflex-dev/reflex/main/scripts/bun_install.sh"
48
+
48
49
  # URL to windows install script.
49
50
  WINDOWS_INSTALL_URL = (
50
51
  "https://raw.githubusercontent.com/reflex-dev/reflex/main/scripts/install.ps1"
@@ -79,7 +80,7 @@ class Node(SimpleNamespace):
79
80
  """Node/ NPM constants."""
80
81
 
81
82
  # The Node version.
82
- VERSION = "18.17.0"
83
+ VERSION = "20.18.0"
83
84
  # The minimum required node version.
84
85
  MIN_VERSION = "18.17.0"
85
86
 
@@ -116,21 +117,21 @@ class PackageJson(SimpleNamespace):
116
117
  PATH = "package.json"
117
118
 
118
119
  DEPENDENCIES = {
119
- "@babel/standalone": "7.25.3",
120
- "@emotion/react": "11.11.1",
121
- "axios": "1.6.0",
120
+ "@babel/standalone": "7.25.7",
121
+ "@emotion/react": "11.13.3",
122
+ "axios": "1.7.7",
122
123
  "json5": "2.2.3",
123
- "next": "14.2.13",
124
- "next-sitemap": "4.1.8",
125
- "next-themes": "0.2.1",
126
- "react": "18.2.0",
127
- "react-dom": "18.2.0",
128
- "react-focus-lock": "2.11.3",
129
- "socket.io-client": "4.6.1",
130
- "universal-cookie": "4.0.4",
124
+ "next": "14.2.14",
125
+ "next-sitemap": "4.2.3",
126
+ "next-themes": "0.3.0",
127
+ "react": "18.3.1",
128
+ "react-dom": "18.3.1",
129
+ "react-focus-lock": "2.13.2",
130
+ "socket.io-client": "4.8.0",
131
+ "universal-cookie": "7.2.0",
131
132
  }
132
133
  DEV_DEPENDENCIES = {
133
- "autoprefixer": "10.4.14",
134
- "postcss": "8.4.31",
134
+ "autoprefixer": "10.4.20",
135
+ "postcss": "8.4.47",
135
136
  "postcss-import": "16.1.0",
136
137
  }
@@ -0,0 +1,11 @@
1
+ """State-related constants."""
2
+
3
+ from enum import Enum
4
+
5
+
6
+ class StateManagerMode(str, Enum):
7
+ """State manager constants."""
8
+
9
+ DISK = "disk"
10
+ MEMORY = "memory"
11
+ REDIS = "redis"
reflex/constants/style.py CHANGED
@@ -7,7 +7,7 @@ class Tailwind(SimpleNamespace):
7
7
  """Tailwind constants."""
8
8
 
9
9
  # The Tailwindcss version
10
- VERSION = "tailwindcss@3.3.2"
10
+ VERSION = "tailwindcss@3.4.13"
11
11
  # The Tailwind config.
12
12
  CONFIG = "tailwind.config.js"
13
13
  # Default Tailwind content paths