reflex 0.7.14a6__py3-none-any.whl → 0.8.0__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/app/rxconfig.py.jinja2 +4 -1
  2. reflex/.templates/jinja/web/package.json.jinja2 +1 -1
  3. reflex/.templates/jinja/web/pages/_app.js.jinja2 +21 -11
  4. reflex/.templates/jinja/web/pages/_document.js.jinja2 +1 -1
  5. reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -1
  6. reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +4 -0
  7. reflex/.templates/jinja/web/styles/styles.css.jinja2 +1 -0
  8. reflex/.templates/jinja/web/utils/context.js.jinja2 +25 -8
  9. reflex/.templates/web/app/entry.client.js +8 -0
  10. reflex/.templates/web/app/routes.js +10 -0
  11. reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +12 -37
  12. reflex/.templates/web/postcss.config.js +1 -1
  13. reflex/.templates/web/react-router.config.js +6 -0
  14. reflex/.templates/web/styles/__reflex_style_reset.css +399 -0
  15. reflex/.templates/web/utils/client_side_routing.js +21 -19
  16. reflex/.templates/web/utils/react-theme.js +92 -0
  17. reflex/.templates/web/utils/state.js +251 -100
  18. reflex/.templates/web/vite-plugin-safari-cachebust.js +160 -0
  19. reflex/.templates/web/vite.config.js +39 -0
  20. reflex/__init__.py +1 -6
  21. reflex/__init__.pyi +327 -192
  22. reflex/app.py +86 -135
  23. reflex/base.py +1 -87
  24. reflex/compiler/compiler.py +70 -19
  25. reflex/compiler/templates.py +3 -3
  26. reflex/compiler/utils.py +91 -33
  27. reflex/components/__init__.py +0 -2
  28. reflex/components/__init__.pyi +34 -18
  29. reflex/components/base/__init__.py +1 -5
  30. reflex/components/base/__init__.pyi +30 -21
  31. reflex/components/base/app_wrap.pyi +7 -7
  32. reflex/components/base/body.pyi +7 -7
  33. reflex/components/base/document.py +18 -14
  34. reflex/components/base/document.pyi +88 -38
  35. reflex/components/base/error_boundary.pyi +7 -7
  36. reflex/components/base/fragment.pyi +7 -7
  37. reflex/components/base/link.pyi +12 -12
  38. reflex/components/base/meta.py +4 -15
  39. reflex/components/base/meta.pyi +31 -31
  40. reflex/components/base/script.py +60 -58
  41. reflex/components/base/script.pyi +248 -34
  42. reflex/components/base/strict_mode.pyi +7 -7
  43. reflex/components/component.py +146 -217
  44. reflex/components/core/__init__.py +1 -0
  45. reflex/components/core/__init__.pyi +77 -37
  46. reflex/components/core/auto_scroll.pyi +7 -7
  47. reflex/components/core/banner.pyi +33 -33
  48. reflex/components/core/client_side_routing.py +7 -6
  49. reflex/components/core/client_side_routing.pyi +8 -59
  50. reflex/components/core/clipboard.pyi +7 -7
  51. reflex/components/core/debounce.py +1 -0
  52. reflex/components/core/debounce.pyi +7 -7
  53. reflex/components/core/foreach.py +5 -4
  54. reflex/components/core/helmet.py +14 -0
  55. reflex/components/{next/base.pyi → core/helmet.pyi} +12 -10
  56. reflex/components/core/html.pyi +7 -7
  57. reflex/components/core/match.py +3 -3
  58. reflex/components/core/sticky.pyi +21 -20
  59. reflex/components/core/upload.py +4 -2
  60. reflex/components/core/upload.pyi +26 -25
  61. reflex/components/datadisplay/__init__.pyi +13 -7
  62. reflex/components/datadisplay/code.py +14 -79
  63. reflex/components/datadisplay/code.pyi +11 -13
  64. reflex/components/datadisplay/dataeditor.pyi +38 -15
  65. reflex/components/datadisplay/shiki_code_block.py +5 -3
  66. reflex/components/datadisplay/shiki_code_block.pyi +16 -15
  67. reflex/components/dynamic.py +5 -5
  68. reflex/components/el/__init__.pyi +506 -246
  69. reflex/components/el/element.pyi +7 -7
  70. reflex/components/el/elements/__init__.pyi +504 -245
  71. reflex/components/el/elements/base.pyi +7 -7
  72. reflex/components/el/elements/forms.pyi +146 -101
  73. reflex/components/el/elements/inline.pyi +142 -142
  74. reflex/components/el/elements/media.pyi +131 -130
  75. reflex/components/el/elements/metadata.pyi +32 -32
  76. reflex/components/el/elements/other.pyi +37 -37
  77. reflex/components/el/elements/scripts.pyi +17 -17
  78. reflex/components/el/elements/sectioning.pyi +77 -77
  79. reflex/components/el/elements/tables.pyi +52 -52
  80. reflex/components/el/elements/typography.pyi +77 -77
  81. reflex/components/field.py +175 -0
  82. reflex/components/gridjs/datatable.py +2 -2
  83. reflex/components/gridjs/datatable.pyi +14 -14
  84. reflex/components/lucide/icon.py +6 -2
  85. reflex/components/lucide/icon.pyi +19 -17
  86. reflex/components/markdown/markdown.py +5 -3
  87. reflex/components/markdown/markdown.pyi +7 -7
  88. reflex/components/moment/moment.py +1 -1
  89. reflex/components/moment/moment.pyi +7 -7
  90. reflex/components/plotly/plotly.py +12 -6
  91. reflex/components/plotly/plotly.pyi +50 -49
  92. reflex/components/props.py +376 -27
  93. reflex/components/radix/__init__.pyi +123 -65
  94. reflex/components/radix/primitives/__init__.pyi +6 -4
  95. reflex/components/radix/primitives/accordion.py +8 -1
  96. reflex/components/radix/primitives/accordion.pyi +37 -37
  97. reflex/components/radix/primitives/base.pyi +12 -12
  98. reflex/components/radix/primitives/drawer.pyi +56 -55
  99. reflex/components/radix/primitives/form.pyi +63 -53
  100. reflex/components/radix/primitives/progress.pyi +26 -25
  101. reflex/components/radix/primitives/slider.pyi +27 -27
  102. reflex/components/radix/themes/__init__.pyi +5 -6
  103. reflex/components/radix/themes/base.py +3 -3
  104. reflex/components/radix/themes/base.pyi +42 -42
  105. reflex/components/radix/themes/color_mode.py +5 -6
  106. reflex/components/radix/themes/color_mode.pyi +17 -17
  107. reflex/components/radix/themes/components/__init__.pyi +75 -38
  108. reflex/components/radix/themes/components/alert_dialog.pyi +37 -37
  109. reflex/components/radix/themes/components/aspect_ratio.pyi +7 -7
  110. reflex/components/radix/themes/components/avatar.pyi +7 -7
  111. reflex/components/radix/themes/components/badge.pyi +7 -7
  112. reflex/components/radix/themes/components/button.pyi +7 -7
  113. reflex/components/radix/themes/components/callout.pyi +26 -25
  114. reflex/components/radix/themes/components/card.pyi +7 -7
  115. reflex/components/radix/themes/components/checkbox.pyi +16 -15
  116. reflex/components/radix/themes/components/checkbox_cards.pyi +12 -12
  117. reflex/components/radix/themes/components/checkbox_group.pyi +12 -12
  118. reflex/components/radix/themes/components/context_menu.pyi +67 -67
  119. reflex/components/radix/themes/components/data_list.pyi +22 -22
  120. reflex/components/radix/themes/components/dialog.pyi +36 -35
  121. reflex/components/radix/themes/components/dropdown_menu.pyi +42 -42
  122. reflex/components/radix/themes/components/hover_card.pyi +21 -20
  123. reflex/components/radix/themes/components/icon_button.pyi +7 -7
  124. reflex/components/radix/themes/components/inset.pyi +7 -7
  125. reflex/components/radix/themes/components/popover.pyi +22 -22
  126. reflex/components/radix/themes/components/progress.pyi +7 -7
  127. reflex/components/radix/themes/components/radio.pyi +7 -7
  128. reflex/components/radix/themes/components/radio_cards.pyi +12 -12
  129. reflex/components/radix/themes/components/radio_group.pyi +21 -20
  130. reflex/components/radix/themes/components/scroll_area.pyi +7 -7
  131. reflex/components/radix/themes/components/segmented_control.pyi +12 -12
  132. reflex/components/radix/themes/components/select.pyi +46 -45
  133. reflex/components/radix/themes/components/separator.pyi +7 -7
  134. reflex/components/radix/themes/components/skeleton.pyi +7 -7
  135. reflex/components/radix/themes/components/slider.pyi +17 -9
  136. reflex/components/radix/themes/components/spinner.pyi +7 -7
  137. reflex/components/radix/themes/components/switch.pyi +7 -7
  138. reflex/components/radix/themes/components/table.pyi +37 -37
  139. reflex/components/radix/themes/components/tabs.pyi +26 -25
  140. reflex/components/radix/themes/components/text_area.pyi +15 -9
  141. reflex/components/radix/themes/components/text_field.pyi +32 -19
  142. reflex/components/radix/themes/components/tooltip.pyi +7 -7
  143. reflex/components/radix/themes/layout/__init__.pyi +27 -14
  144. reflex/components/radix/themes/layout/base.pyi +7 -7
  145. reflex/components/radix/themes/layout/box.pyi +7 -7
  146. reflex/components/radix/themes/layout/center.pyi +7 -7
  147. reflex/components/radix/themes/layout/container.pyi +7 -7
  148. reflex/components/radix/themes/layout/flex.pyi +7 -7
  149. reflex/components/radix/themes/layout/grid.pyi +7 -7
  150. reflex/components/radix/themes/layout/list.pyi +26 -25
  151. reflex/components/radix/themes/layout/section.pyi +7 -7
  152. reflex/components/radix/themes/layout/spacer.pyi +7 -7
  153. reflex/components/radix/themes/layout/stack.pyi +17 -17
  154. reflex/components/radix/themes/typography/__init__.pyi +7 -5
  155. reflex/components/radix/themes/typography/blockquote.pyi +7 -7
  156. reflex/components/radix/themes/typography/code.pyi +7 -7
  157. reflex/components/radix/themes/typography/heading.pyi +7 -7
  158. reflex/components/radix/themes/typography/link.py +46 -11
  159. reflex/components/radix/themes/typography/link.pyi +312 -9
  160. reflex/components/radix/themes/typography/text.pyi +36 -35
  161. reflex/components/react_player/audio.pyi +10 -8
  162. reflex/components/react_player/react_player.pyi +7 -7
  163. reflex/components/react_player/video.pyi +10 -8
  164. reflex/components/recharts/__init__.pyi +208 -100
  165. reflex/components/recharts/cartesian.py +10 -8
  166. reflex/components/recharts/cartesian.pyi +90 -94
  167. reflex/components/recharts/charts.py +4 -2
  168. reflex/components/recharts/charts.pyi +49 -49
  169. reflex/components/recharts/general.pyi +31 -31
  170. reflex/components/recharts/polar.py +8 -4
  171. reflex/components/recharts/polar.pyi +23 -23
  172. reflex/components/recharts/recharts.py +2 -2
  173. reflex/components/recharts/recharts.pyi +12 -12
  174. reflex/components/sonner/toast.py +3 -3
  175. reflex/components/sonner/toast.pyi +9 -9
  176. reflex/config.py +10 -113
  177. reflex/constants/__init__.py +2 -2
  178. reflex/constants/base.py +28 -11
  179. reflex/constants/compiler.py +12 -3
  180. reflex/constants/event.py +1 -0
  181. reflex/constants/installer.py +26 -20
  182. reflex/constants/route.py +27 -8
  183. reflex/constants/state.py +2 -0
  184. reflex/custom_components/custom_components.py +0 -14
  185. reflex/environment.py +77 -5
  186. reflex/event.py +178 -81
  187. reflex/experimental/__init__.py +0 -30
  188. reflex/istate/__init__.py +69 -0
  189. reflex/istate/manager.py +1 -0
  190. reflex/istate/proxy.py +5 -3
  191. reflex/page.py +0 -27
  192. reflex/plugins/__init__.py +3 -2
  193. reflex/plugins/base.py +5 -1
  194. reflex/plugins/shared_tailwind.py +215 -0
  195. reflex/plugins/sitemap.py +206 -0
  196. reflex/plugins/tailwind_v3.py +15 -108
  197. reflex/plugins/tailwind_v4.py +18 -110
  198. reflex/reflex.py +1 -0
  199. reflex/route.py +157 -75
  200. reflex/state.py +171 -155
  201. reflex/testing.py +86 -16
  202. reflex/utils/build.py +38 -82
  203. reflex/utils/exec.py +83 -175
  204. reflex/utils/export.py +2 -2
  205. reflex/utils/format.py +1 -5
  206. reflex/utils/imports.py +5 -16
  207. reflex/utils/misc.py +67 -0
  208. reflex/utils/prerequisites.py +66 -68
  209. reflex/utils/processes.py +24 -47
  210. reflex/utils/pyi_generator.py +44 -49
  211. reflex/utils/serializers.py +14 -1
  212. reflex/utils/telemetry.py +0 -15
  213. reflex/utils/types.py +197 -62
  214. reflex/vars/__init__.py +2 -0
  215. reflex/vars/base.py +367 -134
  216. {reflex-0.7.14a6.dist-info → reflex-0.8.0.dist-info}/METADATA +15 -8
  217. reflex-0.8.0.dist-info/RECORD +403 -0
  218. reflex/.templates/web/next.config.js +0 -7
  219. reflex/components/base/head.py +0 -20
  220. reflex/components/base/head.pyi +0 -116
  221. reflex/components/next/__init__.py +0 -10
  222. reflex/components/next/base.py +0 -7
  223. reflex/components/next/image.py +0 -117
  224. reflex/components/next/image.pyi +0 -94
  225. reflex/components/next/link.py +0 -20
  226. reflex/components/next/link.pyi +0 -67
  227. reflex/components/next/video.py +0 -38
  228. reflex/components/next/video.pyi +0 -68
  229. reflex/components/suneditor/__init__.py +0 -5
  230. reflex/components/suneditor/editor.py +0 -269
  231. reflex/components/suneditor/editor.pyi +0 -199
  232. reflex/experimental/layout.py +0 -254
  233. reflex/experimental/layout.pyi +0 -814
  234. reflex-0.7.14a6.dist-info/RECORD +0 -408
  235. {reflex-0.7.14a6.dist-info → reflex-0.8.0.dist-info}/WHEEL +0 -0
  236. {reflex-0.7.14a6.dist-info → reflex-0.8.0.dist-info}/entry_points.txt +0 -0
  237. {reflex-0.7.14a6.dist-info → reflex-0.8.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,20 +1,19 @@
1
- """Stub file for reflex/components/next/base.py"""
1
+ """Stub file for reflex/components/core/helmet.py"""
2
2
 
3
3
  # ------------------- DO NOT EDIT ----------------------
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
6
  from collections.abc import Mapping, Sequence
7
- from typing import Any, overload
7
+ from typing import Any
8
8
 
9
9
  from reflex.components.component import Component
10
10
  from reflex.components.core.breakpoints import Breakpoints
11
- from reflex.event import EventType
11
+ from reflex.event import EventType, PointerEventInfo
12
12
  from reflex.vars.base import Var
13
13
 
14
- class NextComponent(Component):
15
- @overload
14
+ class Helmet(Component):
16
15
  @classmethod
17
- def create( # type: ignore
16
+ def create(
18
17
  cls,
19
18
  *children,
20
19
  style: Sequence[Mapping[str, Any]]
@@ -29,9 +28,9 @@ class NextComponent(Component):
29
28
  autofocus: bool | None = None,
30
29
  custom_attrs: dict[str, Var | Any] | None = None,
31
30
  on_blur: EventType[()] | None = None,
32
- on_click: EventType[()] | None = None,
33
- on_context_menu: EventType[()] | None = None,
34
- on_double_click: EventType[()] | None = None,
31
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
32
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
33
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
35
34
  on_focus: EventType[()] | None = None,
36
35
  on_mount: EventType[()] | None = None,
37
36
  on_mouse_down: EventType[()] | None = None,
@@ -42,9 +41,10 @@ class NextComponent(Component):
42
41
  on_mouse_over: EventType[()] | None = None,
43
42
  on_mouse_up: EventType[()] | None = None,
44
43
  on_scroll: EventType[()] | None = None,
44
+ on_scroll_end: EventType[()] | None = None,
45
45
  on_unmount: EventType[()] | None = None,
46
46
  **props,
47
- ) -> NextComponent:
47
+ ) -> Helmet:
48
48
  """Create the component.
49
49
 
50
50
  Args:
@@ -61,3 +61,5 @@ class NextComponent(Component):
61
61
  Returns:
62
62
  The component.
63
63
  """
64
+
65
+ helmet = Helmet.create
@@ -4,17 +4,16 @@
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
6
  from collections.abc import Mapping, Sequence
7
- from typing import Any, Literal, overload
7
+ from typing import Any, Literal
8
8
 
9
9
  from reflex.components.core.breakpoints import Breakpoints
10
10
  from reflex.components.el.elements.typography import Div
11
- from reflex.event import EventType
11
+ from reflex.event import EventType, PointerEventInfo
12
12
  from reflex.vars.base import Var
13
13
 
14
14
  class Html(Div):
15
- @overload
16
15
  @classmethod
17
- def create( # type: ignore
16
+ def create(
18
17
  cls,
19
18
  *children,
20
19
  dangerouslySetInnerHTML: Var[dict[str, str]] | dict[str, str] | None = None,
@@ -208,9 +207,9 @@ class Html(Div):
208
207
  autofocus: bool | None = None,
209
208
  custom_attrs: dict[str, Var | Any] | None = None,
210
209
  on_blur: EventType[()] | None = None,
211
- on_click: EventType[()] | None = None,
212
- on_context_menu: EventType[()] | None = None,
213
- on_double_click: EventType[()] | None = None,
210
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
211
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
212
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
214
213
  on_focus: EventType[()] | None = None,
215
214
  on_mount: EventType[()] | None = None,
216
215
  on_mouse_down: EventType[()] | None = None,
@@ -221,6 +220,7 @@ class Html(Div):
221
220
  on_mouse_over: EventType[()] | None = None,
222
221
  on_mouse_up: EventType[()] | None = None,
223
222
  on_scroll: EventType[()] | None = None,
223
+ on_scroll_end: EventType[()] | None = None,
224
224
  on_unmount: EventType[()] | None = None,
225
225
  **props,
226
226
  ) -> Html:
@@ -4,7 +4,7 @@ import textwrap
4
4
  from typing import Any
5
5
 
6
6
  from reflex.components.base import Fragment
7
- from reflex.components.component import BaseComponent, Component, MemoizationLeaf
7
+ from reflex.components.component import BaseComponent, Component, MemoizationLeaf, field
8
8
  from reflex.components.tags import MatchTag, Tag
9
9
  from reflex.style import Style
10
10
  from reflex.utils import format
@@ -21,10 +21,10 @@ class Match(MemoizationLeaf):
21
21
  cond: Var[Any]
22
22
 
23
23
  # The list of match cases to be matched.
24
- match_cases: list[Any] = []
24
+ match_cases: list[Any] = field(default_factory=list, is_javascript_property=False)
25
25
 
26
26
  # The catchall case to match.
27
- default: Any
27
+ default: Any = field(default=None, is_javascript_property=False)
28
28
 
29
29
  @classmethod
30
30
  def create(cls, cond: Any, *cases) -> Component | Var:
@@ -4,20 +4,19 @@
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
6
  from collections.abc import Mapping, Sequence
7
- from typing import Any, Literal, overload
7
+ from typing import Any, Literal
8
8
 
9
9
  from reflex.components.component import ComponentNamespace
10
10
  from reflex.components.core.breakpoints import Breakpoints
11
11
  from reflex.components.el.elements.inline import A
12
12
  from reflex.components.el.elements.media import Svg
13
13
  from reflex.components.radix.themes.typography.text import Text
14
- from reflex.event import EventType
14
+ from reflex.event import EventType, PointerEventInfo
15
15
  from reflex.vars.base import Var
16
16
 
17
17
  class StickyLogo(Svg):
18
- @overload
19
18
  @classmethod
20
- def create( # type: ignore
19
+ def create(
21
20
  cls,
22
21
  *children,
23
22
  width: Var[int | str] | int | str | None = None,
@@ -213,9 +212,9 @@ class StickyLogo(Svg):
213
212
  autofocus: bool | None = None,
214
213
  custom_attrs: dict[str, Var | Any] | None = None,
215
214
  on_blur: EventType[()] | None = None,
216
- on_click: EventType[()] | None = None,
217
- on_context_menu: EventType[()] | None = None,
218
- on_double_click: EventType[()] | None = None,
215
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
216
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
217
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
219
218
  on_focus: EventType[()] | None = None,
220
219
  on_mount: EventType[()] | None = None,
221
220
  on_mouse_down: EventType[()] | None = None,
@@ -226,6 +225,7 @@ class StickyLogo(Svg):
226
225
  on_mouse_over: EventType[()] | None = None,
227
226
  on_mouse_up: EventType[()] | None = None,
228
227
  on_scroll: EventType[()] | None = None,
228
+ on_scroll_end: EventType[()] | None = None,
229
229
  on_unmount: EventType[()] | None = None,
230
230
  **props,
231
231
  ) -> StickyLogo:
@@ -238,9 +238,8 @@ class StickyLogo(Svg):
238
238
  def add_style(self): ...
239
239
 
240
240
  class StickyLabel(Text):
241
- @overload
242
241
  @classmethod
243
- def create( # type: ignore
242
+ def create(
244
243
  cls,
245
244
  *children,
246
245
  as_child: Var[bool] | bool | None = None,
@@ -565,9 +564,9 @@ class StickyLabel(Text):
565
564
  autofocus: bool | None = None,
566
565
  custom_attrs: dict[str, Var | Any] | None = None,
567
566
  on_blur: EventType[()] | None = None,
568
- on_click: EventType[()] | None = None,
569
- on_context_menu: EventType[()] | None = None,
570
- on_double_click: EventType[()] | None = None,
567
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
568
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
569
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
571
570
  on_focus: EventType[()] | None = None,
572
571
  on_mount: EventType[()] | None = None,
573
572
  on_mouse_down: EventType[()] | None = None,
@@ -578,6 +577,7 @@ class StickyLabel(Text):
578
577
  on_mouse_over: EventType[()] | None = None,
579
578
  on_mouse_up: EventType[()] | None = None,
580
579
  on_scroll: EventType[()] | None = None,
580
+ on_scroll_end: EventType[()] | None = None,
581
581
  on_unmount: EventType[()] | None = None,
582
582
  **props,
583
583
  ) -> StickyLabel:
@@ -590,9 +590,8 @@ class StickyLabel(Text):
590
590
  def add_style(self): ...
591
591
 
592
592
  class StickyBadge(A):
593
- @overload
594
593
  @classmethod
595
- def create( # type: ignore
594
+ def create(
596
595
  cls,
597
596
  *children,
598
597
  download: Var[bool | str] | bool | str | None = None,
@@ -820,9 +819,9 @@ class StickyBadge(A):
820
819
  autofocus: bool | None = None,
821
820
  custom_attrs: dict[str, Var | Any] | None = None,
822
821
  on_blur: EventType[()] | None = None,
823
- on_click: EventType[()] | None = None,
824
- on_context_menu: EventType[()] | None = None,
825
- on_double_click: EventType[()] | None = None,
822
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
823
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
824
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
826
825
  on_focus: EventType[()] | None = None,
827
826
  on_mount: EventType[()] | None = None,
828
827
  on_mouse_down: EventType[()] | None = None,
@@ -833,6 +832,7 @@ class StickyBadge(A):
833
832
  on_mouse_over: EventType[()] | None = None,
834
833
  on_mouse_up: EventType[()] | None = None,
835
834
  on_scroll: EventType[()] | None = None,
835
+ on_scroll_end: EventType[()] | None = None,
836
836
  on_unmount: EventType[()] | None = None,
837
837
  **props,
838
838
  ) -> StickyBadge:
@@ -1076,9 +1076,9 @@ class StickyNamespace(ComponentNamespace):
1076
1076
  autofocus: bool | None = None,
1077
1077
  custom_attrs: dict[str, Var | Any] | None = None,
1078
1078
  on_blur: EventType[()] | None = None,
1079
- on_click: EventType[()] | None = None,
1080
- on_context_menu: EventType[()] | None = None,
1081
- on_double_click: EventType[()] | None = None,
1079
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1080
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
1081
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1082
1082
  on_focus: EventType[()] | None = None,
1083
1083
  on_mount: EventType[()] | None = None,
1084
1084
  on_mouse_down: EventType[()] | None = None,
@@ -1089,6 +1089,7 @@ class StickyNamespace(ComponentNamespace):
1089
1089
  on_mouse_over: EventType[()] | None = None,
1090
1090
  on_mouse_up: EventType[()] | None = None,
1091
1091
  on_scroll: EventType[()] | None = None,
1092
+ on_scroll_end: EventType[()] | None = None,
1092
1093
  on_unmount: EventType[()] | None = None,
1093
1094
  **props,
1094
1095
  ) -> StickyBadge:
@@ -12,6 +12,7 @@ from reflex.components.component import (
12
12
  ComponentNamespace,
13
13
  MemoizationLeaf,
14
14
  StatefulComponent,
15
+ field,
15
16
  )
16
17
  from reflex.components.core.cond import cond
17
18
  from reflex.components.el.elements.forms import Input
@@ -234,7 +235,7 @@ class Upload(MemoizationLeaf):
234
235
  on_drop: EventHandler[_on_drop_spec]
235
236
 
236
237
  # Style rules to apply when actively dragging.
237
- drag_active_style: Style | None = None
238
+ drag_active_style: Style | None = field(default=None, is_javascript_property=False)
238
239
 
239
240
  @classmethod
240
241
  def create(cls, *children, **props) -> Component:
@@ -396,7 +397,8 @@ class Upload(MemoizationLeaf):
396
397
  The updated arg_value tuple when arg is "files", otherwise the original arg_value.
397
398
  """
398
399
  if arg_value[0]._js_expr == "files":
399
- placeholder = parse_args_spec(_on_drop_spec)[0]
400
+ placeholders, _ = parse_args_spec(_on_drop_spec)
401
+ placeholder = placeholders[0]
400
402
  return (arg_value[0], placeholder)
401
403
  return arg_value
402
404
 
@@ -5,13 +5,13 @@
5
5
  # ------------------------------------------------------
6
6
  from collections.abc import Mapping, Sequence
7
7
  from pathlib import Path
8
- from typing import Any, ClassVar, overload
8
+ from typing import Any, ClassVar
9
9
 
10
10
  from reflex.components.base.fragment import Fragment
11
11
  from reflex.components.component import Component, ComponentNamespace, MemoizationLeaf
12
12
  from reflex.components.core.breakpoints import Breakpoints
13
13
  from reflex.constants import Dirs
14
- from reflex.event import CallableEventSpec, EventSpec, EventType
14
+ from reflex.event import CallableEventSpec, EventSpec, EventType, PointerEventInfo
15
15
  from reflex.style import Style
16
16
  from reflex.utils.imports import ImportVar
17
17
  from reflex.vars import VarData
@@ -40,9 +40,8 @@ uploaded_files_url_prefix = Var(
40
40
  def get_upload_url(file_path: str | Var[str]) -> Var[str]: ...
41
41
 
42
42
  class UploadFilesProvider(Component):
43
- @overload
44
43
  @classmethod
45
- def create( # type: ignore
44
+ def create(
46
45
  cls,
47
46
  *children,
48
47
  style: Sequence[Mapping[str, Any]]
@@ -57,9 +56,9 @@ class UploadFilesProvider(Component):
57
56
  autofocus: bool | None = None,
58
57
  custom_attrs: dict[str, Var | Any] | None = None,
59
58
  on_blur: EventType[()] | None = None,
60
- on_click: EventType[()] | None = None,
61
- on_context_menu: EventType[()] | None = None,
62
- on_double_click: EventType[()] | None = None,
59
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
60
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
61
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
63
62
  on_focus: EventType[()] | None = None,
64
63
  on_mount: EventType[()] | None = None,
65
64
  on_mouse_down: EventType[()] | None = None,
@@ -70,6 +69,7 @@ class UploadFilesProvider(Component):
70
69
  on_mouse_over: EventType[()] | None = None,
71
70
  on_mouse_up: EventType[()] | None = None,
72
71
  on_scroll: EventType[()] | None = None,
72
+ on_scroll_end: EventType[()] | None = None,
73
73
  on_unmount: EventType[()] | None = None,
74
74
  **props,
75
75
  ) -> UploadFilesProvider:
@@ -91,9 +91,8 @@ class UploadFilesProvider(Component):
91
91
  """
92
92
 
93
93
  class GhostUpload(Fragment):
94
- @overload
95
94
  @classmethod
96
- def create( # type: ignore
95
+ def create(
97
96
  cls,
98
97
  *children,
99
98
  style: Sequence[Mapping[str, Any]]
@@ -108,9 +107,9 @@ class GhostUpload(Fragment):
108
107
  autofocus: bool | None = None,
109
108
  custom_attrs: dict[str, Var | Any] | None = None,
110
109
  on_blur: EventType[()] | None = None,
111
- on_click: EventType[()] | None = None,
112
- on_context_menu: EventType[()] | None = None,
113
- on_double_click: EventType[()] | None = None,
110
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
111
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
112
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
114
113
  on_drop: EventType[()] | EventType[Any] | None = None,
115
114
  on_focus: EventType[()] | None = None,
116
115
  on_mount: EventType[()] | None = None,
@@ -122,6 +121,7 @@ class GhostUpload(Fragment):
122
121
  on_mouse_over: EventType[()] | None = None,
123
122
  on_mouse_up: EventType[()] | None = None,
124
123
  on_scroll: EventType[()] | None = None,
124
+ on_scroll_end: EventType[()] | None = None,
125
125
  on_unmount: EventType[()] | None = None,
126
126
  **props,
127
127
  ) -> GhostUpload:
@@ -146,9 +146,8 @@ class GhostUpload(Fragment):
146
146
  class Upload(MemoizationLeaf):
147
147
  is_used: ClassVar[bool] = False
148
148
 
149
- @overload
150
149
  @classmethod
151
- def create( # type: ignore
150
+ def create(
152
151
  cls,
153
152
  *children,
154
153
  accept: Var[dict[str, Sequence] | None] | dict[str, Sequence] | None = None,
@@ -173,9 +172,9 @@ class Upload(MemoizationLeaf):
173
172
  autofocus: bool | None = None,
174
173
  custom_attrs: dict[str, Var | Any] | None = None,
175
174
  on_blur: EventType[()] | None = None,
176
- on_click: EventType[()] | None = None,
177
- on_context_menu: EventType[()] | None = None,
178
- on_double_click: EventType[()] | None = None,
175
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
176
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
177
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
179
178
  on_drop: EventType[()] | EventType[Any] | None = None,
180
179
  on_focus: EventType[()] | None = None,
181
180
  on_mount: EventType[()] | None = None,
@@ -187,6 +186,7 @@ class Upload(MemoizationLeaf):
187
186
  on_mouse_over: EventType[()] | None = None,
188
187
  on_mouse_up: EventType[()] | None = None,
189
188
  on_scroll: EventType[()] | None = None,
189
+ on_scroll_end: EventType[()] | None = None,
190
190
  on_unmount: EventType[()] | None = None,
191
191
  **props,
192
192
  ) -> Upload:
@@ -219,9 +219,8 @@ class Upload(MemoizationLeaf):
219
219
  """
220
220
 
221
221
  class StyledUpload(Upload):
222
- @overload
223
222
  @classmethod
224
- def create( # type: ignore
223
+ def create(
225
224
  cls,
226
225
  *children,
227
226
  accept: Var[dict[str, Sequence] | None] | dict[str, Sequence] | None = None,
@@ -246,9 +245,9 @@ class StyledUpload(Upload):
246
245
  autofocus: bool | None = None,
247
246
  custom_attrs: dict[str, Var | Any] | None = None,
248
247
  on_blur: EventType[()] | None = None,
249
- on_click: EventType[()] | None = None,
250
- on_context_menu: EventType[()] | None = None,
251
- on_double_click: EventType[()] | None = None,
248
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
249
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
250
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
252
251
  on_drop: EventType[()] | EventType[Any] | None = None,
253
252
  on_focus: EventType[()] | None = None,
254
253
  on_mount: EventType[()] | None = None,
@@ -260,6 +259,7 @@ class StyledUpload(Upload):
260
259
  on_mouse_over: EventType[()] | None = None,
261
260
  on_mouse_up: EventType[()] | None = None,
262
261
  on_scroll: EventType[()] | None = None,
262
+ on_scroll_end: EventType[()] | None = None,
263
263
  on_unmount: EventType[()] | None = None,
264
264
  **props,
265
265
  ) -> StyledUpload:
@@ -319,9 +319,9 @@ class UploadNamespace(ComponentNamespace):
319
319
  autofocus: bool | None = None,
320
320
  custom_attrs: dict[str, Var | Any] | None = None,
321
321
  on_blur: EventType[()] | None = None,
322
- on_click: EventType[()] | None = None,
323
- on_context_menu: EventType[()] | None = None,
324
- on_double_click: EventType[()] | None = None,
322
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
323
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
324
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
325
325
  on_drop: EventType[()] | EventType[Any] | None = None,
326
326
  on_focus: EventType[()] | None = None,
327
327
  on_mount: EventType[()] | None = None,
@@ -333,6 +333,7 @@ class UploadNamespace(ComponentNamespace):
333
333
  on_mouse_over: EventType[()] | None = None,
334
334
  on_mouse_up: EventType[()] | None = None,
335
335
  on_scroll: EventType[()] | None = None,
336
+ on_scroll_end: EventType[()] | None = None,
336
337
  on_unmount: EventType[()] | None = None,
337
338
  **props,
338
339
  ) -> StyledUpload:
@@ -3,10 +3,16 @@
3
3
  # This file was generated by `reflex/utils/pyi_generator.py`!
4
4
  # ------------------------------------------------------
5
5
 
6
- from .code import CodeBlock as CodeBlock
7
- from .code import LiteralCodeLanguage as LiteralCodeLanguage
8
- from .code import code_block as code_block
9
- from .dataeditor import DataEditorTheme as DataEditorTheme
10
- from .dataeditor import data_editor as data_editor
11
- from .dataeditor import data_editor_theme as data_editor_theme
12
- from .logo import logo as logo
6
+ from .code import CodeBlock, LiteralCodeLanguage, code_block
7
+ from .dataeditor import DataEditorTheme, data_editor, data_editor_theme
8
+ from .logo import logo
9
+
10
+ __all__ = [
11
+ "CodeBlock",
12
+ "DataEditorTheme",
13
+ "LiteralCodeLanguage",
14
+ "code_block",
15
+ "data_editor",
16
+ "data_editor_theme",
17
+ "logo",
18
+ ]
@@ -3,13 +3,12 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import dataclasses
6
- import typing
7
6
  from typing import ClassVar, Literal
8
7
 
9
- from reflex.components.component import Component, ComponentNamespace
8
+ from reflex.components.component import Component, ComponentNamespace, field
10
9
  from reflex.components.core.cond import color_mode_cond
11
10
  from reflex.components.lucide.icon import Icon
12
- from reflex.components.markdown.markdown import _LANGUAGE, MarkdownComponentMap
11
+ from reflex.components.markdown.markdown import MarkdownComponentMap
13
12
  from reflex.components.radix.themes.components.button import Button
14
13
  from reflex.components.radix.themes.layout.box import Box
15
14
  from reflex.constants.colors import Color
@@ -315,7 +314,7 @@ def construct_theme_var(theme: str) -> Var[Theme]:
315
314
  theme,
316
315
  _var_data=VarData(
317
316
  imports={
318
- f"react-syntax-highlighter/dist/cjs/styles/prism/{format.to_kebab_case(theme)}": [
317
+ f"react-syntax-highlighter/dist/esm/styles/prism/{format.to_kebab_case(theme)}": [
319
318
  ImportVar(tag=theme, is_default=True, install=False)
320
319
  ]
321
320
  }
@@ -408,16 +407,24 @@ class CodeBlock(Component, MarkdownComponentMap):
408
407
  wrap_long_lines: Var[bool]
409
408
 
410
409
  # A custom style for the code block.
411
- custom_style: dict[str, str | Var | Color] = {}
410
+ custom_style: dict[str, str | Var | Color] = field(
411
+ default_factory=dict, is_javascript_property=False
412
+ )
412
413
 
413
414
  # Props passed down to the code tag.
414
415
  code_tag_props: Var[dict[str, str]]
415
416
 
416
417
  # Whether a copy button should appear.
417
- can_copy: bool | None = False
418
+ can_copy: bool | None = field(
419
+ default=False,
420
+ is_javascript_property=False,
421
+ )
418
422
 
419
423
  # A custom copy button to override the default one.
420
- copy_button: bool | Component | None = None
424
+ copy_button: bool | Component | None = field(
425
+ default=None,
426
+ is_javascript_property=False,
427
+ )
421
428
 
422
429
  @classmethod
423
430
  def create(
@@ -499,78 +506,6 @@ class CodeBlock(Component, MarkdownComponentMap):
499
506
 
500
507
  return out
501
508
 
502
- def _exclude_props(self) -> list[str]:
503
- return ["can_copy", "copy_button"]
504
-
505
- @classmethod
506
- def _get_language_registration_hook(cls, language_var: Var = _LANGUAGE) -> Var:
507
- """Get the hook to register the language.
508
-
509
- Args:
510
- language_var: The const/literal Var of the language module to import.
511
- For markdown, uses the default placeholder _LANGUAGE. For direct use,
512
- a LiteralStringVar should be passed via the language prop.
513
-
514
- Returns:
515
- The hook to register the language.
516
- """
517
- language_in_there = Var.create(typing.get_args(LiteralCodeLanguage)).contains(
518
- language_var
519
- )
520
- async_load = f"""
521
- (async () => {{
522
- try {{
523
- const module = await import(`react-syntax-highlighter/dist/cjs/languages/prism/${{{language_var!s}}}`);
524
- SyntaxHighlighter.registerLanguage({language_var!s}, module.default);
525
- }} catch (error) {{
526
- console.error(`Language ${{{language_var!s}}} is not supported for code blocks inside of markdown: `, error);
527
- }}
528
- }})();
529
- """
530
- return Var(
531
- f"""
532
- if ({language_var!s}) {{
533
- if (!{language_in_there!s}) {{
534
- console.warn(`Language \\`${{{language_var!s}}}\\` is not supported for code blocks inside of markdown.`);
535
- {language_var!s} = '';
536
- }} else {{
537
- {async_load!s}
538
- }}
539
- }}
540
- """
541
- if not isinstance(language_var, LiteralVar)
542
- else f"""
543
- if ({language_var!s}) {{
544
- {async_load!s}
545
- }}""",
546
- _var_data=VarData(
547
- imports={
548
- cls.get_fields()["library"].default_value(): [
549
- ImportVar(tag="PrismAsyncLight", alias="SyntaxHighlighter")
550
- ]
551
- },
552
- ),
553
- )
554
-
555
- @classmethod
556
- def get_component_map_custom_code(cls) -> Var:
557
- """Get the custom code for the component.
558
-
559
- Returns:
560
- The custom code for the component.
561
- """
562
- return cls._get_language_registration_hook()
563
-
564
- def add_hooks(self) -> list[str | Var]:
565
- """Add hooks for the component.
566
-
567
- Returns:
568
- The hooks for the component.
569
- """
570
- return [
571
- self._get_language_registration_hook(language_var=self.language),
572
- ]
573
-
574
509
 
575
510
  class CodeblockNamespace(ComponentNamespace):
576
511
  """Namespace for the CodeBlock component."""
@@ -5,13 +5,13 @@
5
5
  # ------------------------------------------------------
6
6
  import dataclasses
7
7
  from collections.abc import Mapping, Sequence
8
- from typing import Any, ClassVar, Literal, overload
8
+ from typing import Any, ClassVar, Literal
9
9
 
10
10
  from reflex.components.component import Component, ComponentNamespace
11
11
  from reflex.components.core.breakpoints import Breakpoints
12
12
  from reflex.components.markdown.markdown import MarkdownComponentMap
13
13
  from reflex.constants.colors import Color
14
- from reflex.event import EventType
14
+ from reflex.event import EventType, PointerEventInfo
15
15
  from reflex.vars.base import Var
16
16
 
17
17
  LiteralCodeLanguage = Literal[
@@ -351,9 +351,8 @@ for theme_name in dir(Theme):
351
351
  setattr(Theme, theme_name, getattr(Theme, theme_name)._replace(_var_type=Theme))
352
352
 
353
353
  class CodeBlock(Component, MarkdownComponentMap):
354
- @overload
355
354
  @classmethod
356
- def create( # type: ignore
355
+ def create(
357
356
  cls,
358
357
  *children,
359
358
  theme: Theme | Var[Theme | str] | str | None = None,
@@ -942,9 +941,9 @@ class CodeBlock(Component, MarkdownComponentMap):
942
941
  autofocus: bool | None = None,
943
942
  custom_attrs: dict[str, Var | Any] | None = None,
944
943
  on_blur: EventType[()] | None = None,
945
- on_click: EventType[()] | None = None,
946
- on_context_menu: EventType[()] | None = None,
947
- on_double_click: EventType[()] | None = None,
944
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
945
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
946
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
948
947
  on_focus: EventType[()] | None = None,
949
948
  on_mount: EventType[()] | None = None,
950
949
  on_mouse_down: EventType[()] | None = None,
@@ -955,6 +954,7 @@ class CodeBlock(Component, MarkdownComponentMap):
955
954
  on_mouse_over: EventType[()] | None = None,
956
955
  on_mouse_up: EventType[()] | None = None,
957
956
  on_scroll: EventType[()] | None = None,
957
+ on_scroll_end: EventType[()] | None = None,
958
958
  on_unmount: EventType[()] | None = None,
959
959
  **props,
960
960
  ) -> CodeBlock:
@@ -986,9 +986,6 @@ class CodeBlock(Component, MarkdownComponentMap):
986
986
  """
987
987
 
988
988
  def add_style(self): ...
989
- @classmethod
990
- def get_component_map_custom_code(cls) -> Var: ...
991
- def add_hooks(self) -> list[str | Var]: ...
992
989
 
993
990
  class CodeblockNamespace(ComponentNamespace):
994
991
  themes = Theme
@@ -1582,9 +1579,9 @@ class CodeblockNamespace(ComponentNamespace):
1582
1579
  autofocus: bool | None = None,
1583
1580
  custom_attrs: dict[str, Var | Any] | None = None,
1584
1581
  on_blur: EventType[()] | None = None,
1585
- on_click: EventType[()] | None = None,
1586
- on_context_menu: EventType[()] | None = None,
1587
- on_double_click: EventType[()] | None = None,
1582
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1583
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
1584
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1588
1585
  on_focus: EventType[()] | None = None,
1589
1586
  on_mount: EventType[()] | None = None,
1590
1587
  on_mouse_down: EventType[()] | None = None,
@@ -1595,6 +1592,7 @@ class CodeblockNamespace(ComponentNamespace):
1595
1592
  on_mouse_over: EventType[()] | None = None,
1596
1593
  on_mouse_up: EventType[()] | None = None,
1597
1594
  on_scroll: EventType[()] | None = None,
1595
+ on_scroll_end: EventType[()] | None = None,
1598
1596
  on_unmount: EventType[()] | None = None,
1599
1597
  **props,
1600
1598
  ) -> CodeBlock: