reflex 0.7.14a6__py3-none-any.whl → 0.8.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 (206) 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 +16 -10
  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/utils/context.js.jinja2 +25 -6
  7. reflex/.templates/web/app/entry.client.js +8 -0
  8. reflex/.templates/web/app/routes.js +10 -0
  9. reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +12 -32
  10. reflex/.templates/web/postcss.config.js +1 -1
  11. reflex/.templates/web/react-router.config.js +6 -0
  12. reflex/.templates/web/utils/client_side_routing.js +21 -19
  13. reflex/.templates/web/utils/react-theme.js +89 -0
  14. reflex/.templates/web/utils/state.js +155 -67
  15. reflex/.templates/web/vite.config.js +32 -0
  16. reflex/__init__.py +1 -6
  17. reflex/__init__.pyi +0 -4
  18. reflex/app.py +52 -115
  19. reflex/base.py +1 -87
  20. reflex/compiler/compiler.py +40 -3
  21. reflex/compiler/utils.py +54 -28
  22. reflex/components/__init__.py +0 -2
  23. reflex/components/__init__.pyi +0 -3
  24. reflex/components/base/__init__.py +1 -5
  25. reflex/components/base/__init__.pyi +4 -6
  26. reflex/components/base/app_wrap.pyi +5 -4
  27. reflex/components/base/body.pyi +5 -4
  28. reflex/components/base/document.py +18 -14
  29. reflex/components/base/document.pyi +83 -27
  30. reflex/components/base/error_boundary.pyi +5 -4
  31. reflex/components/base/fragment.pyi +5 -4
  32. reflex/components/base/link.pyi +9 -7
  33. reflex/components/base/meta.pyi +17 -13
  34. reflex/components/base/script.py +60 -58
  35. reflex/components/base/script.pyi +246 -31
  36. reflex/components/base/strict_mode.pyi +5 -4
  37. reflex/components/component.py +109 -194
  38. reflex/components/core/__init__.py +1 -0
  39. reflex/components/core/__init__.pyi +1 -0
  40. reflex/components/core/auto_scroll.pyi +5 -4
  41. reflex/components/core/banner.pyi +25 -19
  42. reflex/components/core/client_side_routing.py +7 -6
  43. reflex/components/core/client_side_routing.pyi +6 -56
  44. reflex/components/core/clipboard.pyi +5 -4
  45. reflex/components/core/debounce.py +1 -0
  46. reflex/components/core/debounce.pyi +5 -4
  47. reflex/components/core/foreach.py +3 -2
  48. reflex/components/core/helmet.py +14 -0
  49. reflex/components/{next/base.pyi → core/helmet.pyi} +10 -7
  50. reflex/components/core/html.pyi +5 -4
  51. reflex/components/core/sticky.pyi +17 -13
  52. reflex/components/core/upload.py +2 -1
  53. reflex/components/core/upload.pyi +21 -16
  54. reflex/components/datadisplay/code.pyi +9 -7
  55. reflex/components/datadisplay/dataeditor.pyi +5 -4
  56. reflex/components/datadisplay/shiki_code_block.pyi +13 -10
  57. reflex/components/dynamic.py +4 -5
  58. reflex/components/el/element.pyi +5 -4
  59. reflex/components/el/elements/base.pyi +5 -4
  60. reflex/components/el/elements/forms.pyi +69 -52
  61. reflex/components/el/elements/inline.pyi +113 -85
  62. reflex/components/el/elements/media.pyi +105 -79
  63. reflex/components/el/elements/metadata.pyi +25 -19
  64. reflex/components/el/elements/other.pyi +29 -22
  65. reflex/components/el/elements/scripts.pyi +13 -10
  66. reflex/components/el/elements/sectioning.pyi +61 -46
  67. reflex/components/el/elements/tables.pyi +41 -31
  68. reflex/components/el/elements/typography.pyi +61 -46
  69. reflex/components/field.py +175 -0
  70. reflex/components/gridjs/datatable.py +2 -2
  71. reflex/components/gridjs/datatable.pyi +11 -9
  72. reflex/components/lucide/icon.py +6 -2
  73. reflex/components/lucide/icon.pyi +15 -10
  74. reflex/components/markdown/markdown.pyi +5 -4
  75. reflex/components/moment/moment.pyi +5 -4
  76. reflex/components/plotly/plotly.pyi +19 -10
  77. reflex/components/props.py +376 -27
  78. reflex/components/radix/primitives/accordion.py +8 -1
  79. reflex/components/radix/primitives/accordion.pyi +29 -22
  80. reflex/components/radix/primitives/base.pyi +9 -7
  81. reflex/components/radix/primitives/drawer.pyi +45 -34
  82. reflex/components/radix/primitives/form.pyi +41 -31
  83. reflex/components/radix/primitives/progress.pyi +21 -16
  84. reflex/components/radix/primitives/slider.pyi +21 -16
  85. reflex/components/radix/themes/base.py +3 -3
  86. reflex/components/radix/themes/base.pyi +33 -25
  87. reflex/components/radix/themes/color_mode.pyi +13 -10
  88. reflex/components/radix/themes/components/alert_dialog.pyi +29 -22
  89. reflex/components/radix/themes/components/aspect_ratio.pyi +5 -4
  90. reflex/components/radix/themes/components/avatar.pyi +5 -4
  91. reflex/components/radix/themes/components/badge.pyi +5 -4
  92. reflex/components/radix/themes/components/button.pyi +5 -4
  93. reflex/components/radix/themes/components/callout.pyi +21 -16
  94. reflex/components/radix/themes/components/card.pyi +5 -4
  95. reflex/components/radix/themes/components/checkbox.pyi +13 -10
  96. reflex/components/radix/themes/components/checkbox_cards.pyi +9 -7
  97. reflex/components/radix/themes/components/checkbox_group.pyi +9 -7
  98. reflex/components/radix/themes/components/context_menu.pyi +53 -40
  99. reflex/components/radix/themes/components/data_list.pyi +17 -13
  100. reflex/components/radix/themes/components/dialog.pyi +29 -22
  101. reflex/components/radix/themes/components/dropdown_menu.pyi +33 -25
  102. reflex/components/radix/themes/components/hover_card.pyi +17 -13
  103. reflex/components/radix/themes/components/icon_button.pyi +5 -4
  104. reflex/components/radix/themes/components/inset.pyi +5 -4
  105. reflex/components/radix/themes/components/popover.pyi +17 -13
  106. reflex/components/radix/themes/components/progress.pyi +5 -4
  107. reflex/components/radix/themes/components/radio.pyi +5 -4
  108. reflex/components/radix/themes/components/radio_cards.pyi +9 -7
  109. reflex/components/radix/themes/components/radio_group.pyi +17 -13
  110. reflex/components/radix/themes/components/scroll_area.pyi +5 -4
  111. reflex/components/radix/themes/components/segmented_control.pyi +9 -7
  112. reflex/components/radix/themes/components/select.pyi +37 -28
  113. reflex/components/radix/themes/components/separator.pyi +5 -4
  114. reflex/components/radix/themes/components/skeleton.pyi +5 -4
  115. reflex/components/radix/themes/components/slider.pyi +5 -4
  116. reflex/components/radix/themes/components/spinner.pyi +5 -4
  117. reflex/components/radix/themes/components/switch.pyi +5 -4
  118. reflex/components/radix/themes/components/table.pyi +29 -22
  119. reflex/components/radix/themes/components/tabs.pyi +21 -16
  120. reflex/components/radix/themes/components/text_area.pyi +5 -4
  121. reflex/components/radix/themes/components/text_field.pyi +13 -10
  122. reflex/components/radix/themes/components/tooltip.pyi +5 -4
  123. reflex/components/radix/themes/layout/base.pyi +5 -4
  124. reflex/components/radix/themes/layout/box.pyi +5 -4
  125. reflex/components/radix/themes/layout/center.pyi +5 -4
  126. reflex/components/radix/themes/layout/container.pyi +5 -4
  127. reflex/components/radix/themes/layout/flex.pyi +5 -4
  128. reflex/components/radix/themes/layout/grid.pyi +5 -4
  129. reflex/components/radix/themes/layout/list.pyi +21 -16
  130. reflex/components/radix/themes/layout/section.pyi +5 -4
  131. reflex/components/radix/themes/layout/spacer.pyi +5 -4
  132. reflex/components/radix/themes/layout/stack.pyi +13 -10
  133. reflex/components/radix/themes/typography/blockquote.pyi +5 -4
  134. reflex/components/radix/themes/typography/code.pyi +5 -4
  135. reflex/components/radix/themes/typography/heading.pyi +5 -4
  136. reflex/components/radix/themes/typography/link.py +42 -9
  137. reflex/components/radix/themes/typography/link.pyi +311 -6
  138. reflex/components/radix/themes/typography/text.pyi +29 -22
  139. reflex/components/react_player/audio.pyi +5 -4
  140. reflex/components/react_player/react_player.pyi +5 -4
  141. reflex/components/react_player/video.pyi +5 -4
  142. reflex/components/recharts/cartesian.py +2 -1
  143. reflex/components/recharts/cartesian.pyi +65 -46
  144. reflex/components/recharts/charts.py +4 -2
  145. reflex/components/recharts/charts.pyi +36 -24
  146. reflex/components/recharts/general.pyi +24 -18
  147. reflex/components/recharts/polar.py +8 -4
  148. reflex/components/recharts/polar.pyi +16 -10
  149. reflex/components/recharts/recharts.pyi +9 -7
  150. reflex/components/sonner/toast.py +2 -2
  151. reflex/components/sonner/toast.pyi +7 -6
  152. reflex/config.py +3 -77
  153. reflex/constants/__init__.py +1 -0
  154. reflex/constants/base.py +38 -8
  155. reflex/constants/compiler.py +4 -2
  156. reflex/constants/event.py +1 -0
  157. reflex/constants/installer.py +23 -16
  158. reflex/constants/state.py +2 -0
  159. reflex/custom_components/custom_components.py +0 -14
  160. reflex/environment.py +1 -1
  161. reflex/event.py +178 -81
  162. reflex/experimental/__init__.py +0 -30
  163. reflex/istate/proxy.py +5 -3
  164. reflex/page.py +0 -27
  165. reflex/plugins/__init__.py +3 -2
  166. reflex/plugins/base.py +5 -1
  167. reflex/plugins/shared_tailwind.py +158 -0
  168. reflex/plugins/sitemap.py +206 -0
  169. reflex/plugins/tailwind_v3.py +13 -106
  170. reflex/plugins/tailwind_v4.py +15 -108
  171. reflex/reflex.py +1 -0
  172. reflex/state.py +134 -140
  173. reflex/testing.py +57 -9
  174. reflex/utils/build.py +9 -69
  175. reflex/utils/exec.py +59 -161
  176. reflex/utils/export.py +1 -1
  177. reflex/utils/imports.py +0 -4
  178. reflex/utils/misc.py +28 -0
  179. reflex/utils/prerequisites.py +62 -59
  180. reflex/utils/processes.py +6 -6
  181. reflex/utils/pyi_generator.py +21 -9
  182. reflex/utils/serializers.py +14 -1
  183. reflex/utils/types.py +196 -61
  184. reflex/vars/__init__.py +2 -0
  185. reflex/vars/base.py +367 -134
  186. {reflex-0.7.14a6.dist-info → reflex-0.8.0a1.dist-info}/METADATA +12 -5
  187. {reflex-0.7.14a6.dist-info → reflex-0.8.0a1.dist-info}/RECORD +190 -197
  188. reflex/.templates/web/next.config.js +0 -7
  189. reflex/components/base/head.py +0 -20
  190. reflex/components/base/head.pyi +0 -116
  191. reflex/components/next/__init__.py +0 -10
  192. reflex/components/next/base.py +0 -7
  193. reflex/components/next/image.py +0 -117
  194. reflex/components/next/image.pyi +0 -94
  195. reflex/components/next/link.py +0 -20
  196. reflex/components/next/link.pyi +0 -67
  197. reflex/components/next/video.py +0 -38
  198. reflex/components/next/video.pyi +0 -68
  199. reflex/components/suneditor/__init__.py +0 -5
  200. reflex/components/suneditor/editor.py +0 -269
  201. reflex/components/suneditor/editor.pyi +0 -199
  202. reflex/experimental/layout.py +0 -254
  203. reflex/experimental/layout.pyi +0 -814
  204. {reflex-0.7.14a6.dist-info → reflex-0.8.0a1.dist-info}/WHEEL +0 -0
  205. {reflex-0.7.14a6.dist-info → reflex-0.8.0a1.dist-info}/entry_points.txt +0 -0
  206. {reflex-0.7.14a6.dist-info → reflex-0.8.0a1.dist-info}/licenses/LICENSE +0 -0
@@ -59,11 +59,12 @@ def wait_for_client_redirect(component: Component) -> Component:
59
59
  )
60
60
 
61
61
 
62
- class Default404Page(Component):
63
- """The NextJS default 404 page."""
62
+ def default_404_page() -> Component:
63
+ """Render the default 404 page.
64
64
 
65
- library = "next/error"
66
- tag = "Error"
67
- is_default = True
65
+ Returns:
66
+ The 404 page component.
67
+ """
68
+ import reflex as rx
68
69
 
69
- status_code: Var[int] = Var.create(404)
70
+ return rx.el.span("404: Page not found")
@@ -8,7 +8,7 @@ from typing import Any, overload
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
14
  route_not_found: Var
@@ -33,9 +33,9 @@ class ClientSideRouting(Component):
33
33
  autofocus: bool | None = None,
34
34
  custom_attrs: dict[str, Var | Any] | None = None,
35
35
  on_blur: EventType[()] | None = None,
36
- on_click: EventType[()] | None = None,
37
- on_context_menu: EventType[()] | None = None,
38
- on_double_click: EventType[()] | None = None,
36
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
37
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
38
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
39
39
  on_focus: EventType[()] | None = None,
40
40
  on_mount: EventType[()] | None = None,
41
41
  on_mouse_down: EventType[()] | None = None,
@@ -46,6 +46,7 @@ class ClientSideRouting(Component):
46
46
  on_mouse_over: EventType[()] | None = None,
47
47
  on_mouse_up: EventType[()] | None = None,
48
48
  on_scroll: EventType[()] | None = None,
49
+ on_scroll_end: EventType[()] | None = None,
49
50
  on_unmount: EventType[()] | None = None,
50
51
  **props,
51
52
  ) -> ClientSideRouting:
@@ -67,55 +68,4 @@ class ClientSideRouting(Component):
67
68
  """
68
69
 
69
70
  def wait_for_client_redirect(component: Component) -> Component: ...
70
-
71
- class Default404Page(Component):
72
- @overload
73
- @classmethod
74
- def create( # type: ignore
75
- cls,
76
- *children,
77
- status_code: Var[int] | int | None = None,
78
- style: Sequence[Mapping[str, Any]]
79
- | Mapping[str, Any]
80
- | Var[Mapping[str, Any]]
81
- | Breakpoints
82
- | None = None,
83
- key: Any | None = None,
84
- id: Any | None = None,
85
- ref: Var | None = None,
86
- class_name: Any | None = None,
87
- autofocus: bool | None = None,
88
- custom_attrs: dict[str, Var | Any] | None = None,
89
- on_blur: EventType[()] | None = None,
90
- on_click: EventType[()] | None = None,
91
- on_context_menu: EventType[()] | None = None,
92
- on_double_click: EventType[()] | None = None,
93
- on_focus: EventType[()] | None = None,
94
- on_mount: EventType[()] | None = None,
95
- on_mouse_down: EventType[()] | None = None,
96
- on_mouse_enter: EventType[()] | None = None,
97
- on_mouse_leave: EventType[()] | None = None,
98
- on_mouse_move: EventType[()] | None = None,
99
- on_mouse_out: EventType[()] | None = None,
100
- on_mouse_over: EventType[()] | None = None,
101
- on_mouse_up: EventType[()] | None = None,
102
- on_scroll: EventType[()] | None = None,
103
- on_unmount: EventType[()] | None = None,
104
- **props,
105
- ) -> Default404Page:
106
- """Create the component.
107
-
108
- Args:
109
- *children: The children of the component.
110
- style: The style of the component.
111
- key: A unique key for the component.
112
- id: The id for the component.
113
- ref: The Var to pass as the ref to the component.
114
- class_name: The class name for the component.
115
- autofocus: Whether the component should take the focus once the page is loaded
116
- custom_attrs: custom attribute
117
- **props: The props of the component.
118
-
119
- Returns:
120
- The component.
121
- """
71
+ def default_404_page() -> Component: ...
@@ -8,7 +8,7 @@ from typing import Any, overload
8
8
 
9
9
  from reflex.components.base.fragment import Fragment
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.utils.imports import ImportVar
13
13
  from reflex.vars.base import Var
14
14
 
@@ -34,9 +34,9 @@ class Clipboard(Fragment):
34
34
  autofocus: bool | None = None,
35
35
  custom_attrs: dict[str, Var | Any] | None = None,
36
36
  on_blur: EventType[()] | None = None,
37
- on_click: EventType[()] | None = None,
38
- on_context_menu: EventType[()] | None = None,
39
- on_double_click: EventType[()] | None = None,
37
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
38
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
39
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
40
40
  on_focus: EventType[()] | None = None,
41
41
  on_mount: EventType[()] | None = None,
42
42
  on_mouse_down: EventType[()] | None = None,
@@ -48,6 +48,7 @@ class Clipboard(Fragment):
48
48
  on_mouse_up: EventType[()] | None = None,
49
49
  on_paste: EventType[()] | EventType[list[tuple[str, str]]] | None = None,
50
50
  on_scroll: EventType[()] | None = None,
51
+ on_scroll_end: EventType[()] | None = None,
51
52
  on_unmount: EventType[()] | None = None,
52
53
  **props,
53
54
  ) -> Clipboard:
@@ -23,6 +23,7 @@ class DebounceInput(Component):
23
23
 
24
24
  library = "react-debounce-input@3.3.0"
25
25
  tag = "DebounceInput"
26
+ is_default = True
26
27
 
27
28
  # Minimum input characters before triggering the on_change event
28
29
  min_length: Var[int]
@@ -8,7 +8,7 @@ from typing import Any, overload
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
14
  DEFAULT_DEBOUNCE_TIMEOUT = 300
@@ -39,9 +39,9 @@ class DebounceInput(Component):
39
39
  custom_attrs: dict[str, Var | Any] | None = None,
40
40
  on_blur: EventType[()] | None = None,
41
41
  on_change: EventType[()] | None = None,
42
- on_click: EventType[()] | None = None,
43
- on_context_menu: EventType[()] | None = None,
44
- on_double_click: EventType[()] | None = None,
42
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
43
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
44
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
45
45
  on_focus: EventType[()] | None = None,
46
46
  on_mount: EventType[()] | None = None,
47
47
  on_mouse_down: EventType[()] | None = None,
@@ -52,6 +52,7 @@ class DebounceInput(Component):
52
52
  on_mouse_over: EventType[()] | None = None,
53
53
  on_mouse_up: EventType[()] | None = None,
54
54
  on_scroll: EventType[()] | None = None,
55
+ on_scroll_end: EventType[()] | None = None,
55
56
  on_unmount: EventType[()] | None = None,
56
57
  **props,
57
58
  ) -> DebounceInput:
@@ -12,6 +12,7 @@ from reflex.components.component import Component
12
12
  from reflex.components.core.cond import cond
13
13
  from reflex.components.tags import IterTag
14
14
  from reflex.constants import MemoizationMode
15
+ from reflex.constants.state import FIELD_MARKER
15
16
  from reflex.state import ComponentState
16
17
  from reflex.utils import types
17
18
  from reflex.utils.exceptions import UntypedVarError
@@ -132,11 +133,11 @@ class Foreach(Component):
132
133
 
133
134
  if len(params) >= 1:
134
135
  # Determine the arg var name based on the params accepted by render_fn.
135
- props["arg_var_name"] = params[0].name
136
+ props["arg_var_name"] = params[0].name + FIELD_MARKER
136
137
 
137
138
  if len(params) == 2:
138
139
  # Determine the index var name based on the params accepted by render_fn.
139
- props["index_var_name"] = params[1].name
140
+ props["index_var_name"] = params[1].name + FIELD_MARKER
140
141
  else:
141
142
  render_fn = self.render_fn
142
143
  # Otherwise, use a deterministic index, based on the render function bytecode.
@@ -0,0 +1,14 @@
1
+ """Helmet component module."""
2
+
3
+ from reflex.components.component import Component
4
+
5
+
6
+ class Helmet(Component):
7
+ """A helmet component."""
8
+
9
+ library = "react-helmet@6.1.0"
10
+
11
+ tag = "Helmet"
12
+
13
+
14
+ helmet = Helmet.create
@@ -1,4 +1,4 @@
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`!
@@ -8,10 +8,10 @@ from typing import Any, overload
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):
14
+ class Helmet(Component):
15
15
  @overload
16
16
  @classmethod
17
17
  def create( # type: ignore
@@ -29,9 +29,9 @@ class NextComponent(Component):
29
29
  autofocus: bool | None = None,
30
30
  custom_attrs: dict[str, Var | Any] | None = None,
31
31
  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,
32
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
33
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
34
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
35
35
  on_focus: EventType[()] | None = None,
36
36
  on_mount: EventType[()] | None = None,
37
37
  on_mouse_down: EventType[()] | None = None,
@@ -42,9 +42,10 @@ class NextComponent(Component):
42
42
  on_mouse_over: EventType[()] | None = None,
43
43
  on_mouse_up: EventType[()] | None = None,
44
44
  on_scroll: EventType[()] | None = None,
45
+ on_scroll_end: EventType[()] | None = None,
45
46
  on_unmount: EventType[()] | None = None,
46
47
  **props,
47
- ) -> NextComponent:
48
+ ) -> Helmet:
48
49
  """Create the component.
49
50
 
50
51
  Args:
@@ -61,3 +62,5 @@ class NextComponent(Component):
61
62
  Returns:
62
63
  The component.
63
64
  """
65
+
66
+ helmet = Helmet.create
@@ -8,7 +8,7 @@ from typing import Any, Literal, overload
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):
@@ -208,9 +208,9 @@ class Html(Div):
208
208
  autofocus: bool | None = None,
209
209
  custom_attrs: dict[str, Var | Any] | None = None,
210
210
  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,
211
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
212
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
213
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
214
214
  on_focus: EventType[()] | None = None,
215
215
  on_mount: EventType[()] | None = None,
216
216
  on_mouse_down: EventType[()] | None = None,
@@ -221,6 +221,7 @@ class Html(Div):
221
221
  on_mouse_over: EventType[()] | None = None,
222
222
  on_mouse_up: EventType[()] | None = None,
223
223
  on_scroll: EventType[()] | None = None,
224
+ on_scroll_end: EventType[()] | None = None,
224
225
  on_unmount: EventType[()] | None = None,
225
226
  **props,
226
227
  ) -> Html:
@@ -11,7 +11,7 @@ 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):
@@ -213,9 +213,9 @@ class StickyLogo(Svg):
213
213
  autofocus: bool | None = None,
214
214
  custom_attrs: dict[str, Var | Any] | None = None,
215
215
  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,
216
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
217
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
218
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
219
219
  on_focus: EventType[()] | None = None,
220
220
  on_mount: EventType[()] | None = None,
221
221
  on_mouse_down: EventType[()] | None = None,
@@ -226,6 +226,7 @@ class StickyLogo(Svg):
226
226
  on_mouse_over: EventType[()] | None = None,
227
227
  on_mouse_up: EventType[()] | None = None,
228
228
  on_scroll: EventType[()] | None = None,
229
+ on_scroll_end: EventType[()] | None = None,
229
230
  on_unmount: EventType[()] | None = None,
230
231
  **props,
231
232
  ) -> StickyLogo:
@@ -565,9 +566,9 @@ class StickyLabel(Text):
565
566
  autofocus: bool | None = None,
566
567
  custom_attrs: dict[str, Var | Any] | None = None,
567
568
  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,
569
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
570
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
571
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
571
572
  on_focus: EventType[()] | None = None,
572
573
  on_mount: EventType[()] | None = None,
573
574
  on_mouse_down: EventType[()] | None = None,
@@ -578,6 +579,7 @@ class StickyLabel(Text):
578
579
  on_mouse_over: EventType[()] | None = None,
579
580
  on_mouse_up: EventType[()] | None = None,
580
581
  on_scroll: EventType[()] | None = None,
582
+ on_scroll_end: EventType[()] | None = None,
581
583
  on_unmount: EventType[()] | None = None,
582
584
  **props,
583
585
  ) -> StickyLabel:
@@ -820,9 +822,9 @@ class StickyBadge(A):
820
822
  autofocus: bool | None = None,
821
823
  custom_attrs: dict[str, Var | Any] | None = None,
822
824
  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,
825
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
826
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
827
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
826
828
  on_focus: EventType[()] | None = None,
827
829
  on_mount: EventType[()] | None = None,
828
830
  on_mouse_down: EventType[()] | None = None,
@@ -833,6 +835,7 @@ class StickyBadge(A):
833
835
  on_mouse_over: EventType[()] | None = None,
834
836
  on_mouse_up: EventType[()] | None = None,
835
837
  on_scroll: EventType[()] | None = None,
838
+ on_scroll_end: EventType[()] | None = None,
836
839
  on_unmount: EventType[()] | None = None,
837
840
  **props,
838
841
  ) -> StickyBadge:
@@ -1076,9 +1079,9 @@ class StickyNamespace(ComponentNamespace):
1076
1079
  autofocus: bool | None = None,
1077
1080
  custom_attrs: dict[str, Var | Any] | None = None,
1078
1081
  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,
1082
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1083
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
1084
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1082
1085
  on_focus: EventType[()] | None = None,
1083
1086
  on_mount: EventType[()] | None = None,
1084
1087
  on_mouse_down: EventType[()] | None = None,
@@ -1089,6 +1092,7 @@ class StickyNamespace(ComponentNamespace):
1089
1092
  on_mouse_over: EventType[()] | None = None,
1090
1093
  on_mouse_up: EventType[()] | None = None,
1091
1094
  on_scroll: EventType[()] | None = None,
1095
+ on_scroll_end: EventType[()] | None = None,
1092
1096
  on_unmount: EventType[()] | None = None,
1093
1097
  **props,
1094
1098
  ) -> StickyBadge:
@@ -396,7 +396,8 @@ class Upload(MemoizationLeaf):
396
396
  The updated arg_value tuple when arg is "files", otherwise the original arg_value.
397
397
  """
398
398
  if arg_value[0]._js_expr == "files":
399
- placeholder = parse_args_spec(_on_drop_spec)[0]
399
+ placeholders, _ = parse_args_spec(_on_drop_spec)
400
+ placeholder = placeholders[0]
400
401
  return (arg_value[0], placeholder)
401
402
  return arg_value
402
403
 
@@ -11,7 +11,7 @@ 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
@@ -57,9 +57,9 @@ class UploadFilesProvider(Component):
57
57
  autofocus: bool | None = None,
58
58
  custom_attrs: dict[str, Var | Any] | None = None,
59
59
  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,
60
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
61
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
62
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
63
63
  on_focus: EventType[()] | None = None,
64
64
  on_mount: EventType[()] | None = None,
65
65
  on_mouse_down: EventType[()] | None = None,
@@ -70,6 +70,7 @@ class UploadFilesProvider(Component):
70
70
  on_mouse_over: EventType[()] | None = None,
71
71
  on_mouse_up: EventType[()] | None = None,
72
72
  on_scroll: EventType[()] | None = None,
73
+ on_scroll_end: EventType[()] | None = None,
73
74
  on_unmount: EventType[()] | None = None,
74
75
  **props,
75
76
  ) -> UploadFilesProvider:
@@ -108,9 +109,9 @@ class GhostUpload(Fragment):
108
109
  autofocus: bool | None = None,
109
110
  custom_attrs: dict[str, Var | Any] | None = None,
110
111
  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,
112
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
113
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
114
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
114
115
  on_drop: EventType[()] | EventType[Any] | None = None,
115
116
  on_focus: EventType[()] | None = None,
116
117
  on_mount: EventType[()] | None = None,
@@ -122,6 +123,7 @@ class GhostUpload(Fragment):
122
123
  on_mouse_over: EventType[()] | None = None,
123
124
  on_mouse_up: EventType[()] | None = None,
124
125
  on_scroll: EventType[()] | None = None,
126
+ on_scroll_end: EventType[()] | None = None,
125
127
  on_unmount: EventType[()] | None = None,
126
128
  **props,
127
129
  ) -> GhostUpload:
@@ -173,9 +175,9 @@ class Upload(MemoizationLeaf):
173
175
  autofocus: bool | None = None,
174
176
  custom_attrs: dict[str, Var | Any] | None = None,
175
177
  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,
178
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
179
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
180
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
179
181
  on_drop: EventType[()] | EventType[Any] | None = None,
180
182
  on_focus: EventType[()] | None = None,
181
183
  on_mount: EventType[()] | None = None,
@@ -187,6 +189,7 @@ class Upload(MemoizationLeaf):
187
189
  on_mouse_over: EventType[()] | None = None,
188
190
  on_mouse_up: EventType[()] | None = None,
189
191
  on_scroll: EventType[()] | None = None,
192
+ on_scroll_end: EventType[()] | None = None,
190
193
  on_unmount: EventType[()] | None = None,
191
194
  **props,
192
195
  ) -> Upload:
@@ -246,9 +249,9 @@ class StyledUpload(Upload):
246
249
  autofocus: bool | None = None,
247
250
  custom_attrs: dict[str, Var | Any] | None = None,
248
251
  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,
252
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
253
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
254
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
252
255
  on_drop: EventType[()] | EventType[Any] | None = None,
253
256
  on_focus: EventType[()] | None = None,
254
257
  on_mount: EventType[()] | None = None,
@@ -260,6 +263,7 @@ class StyledUpload(Upload):
260
263
  on_mouse_over: EventType[()] | None = None,
261
264
  on_mouse_up: EventType[()] | None = None,
262
265
  on_scroll: EventType[()] | None = None,
266
+ on_scroll_end: EventType[()] | None = None,
263
267
  on_unmount: EventType[()] | None = None,
264
268
  **props,
265
269
  ) -> StyledUpload:
@@ -319,9 +323,9 @@ class UploadNamespace(ComponentNamespace):
319
323
  autofocus: bool | None = None,
320
324
  custom_attrs: dict[str, Var | Any] | None = None,
321
325
  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,
326
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
327
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
328
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
325
329
  on_drop: EventType[()] | EventType[Any] | None = None,
326
330
  on_focus: EventType[()] | None = None,
327
331
  on_mount: EventType[()] | None = None,
@@ -333,6 +337,7 @@ class UploadNamespace(ComponentNamespace):
333
337
  on_mouse_over: EventType[()] | None = None,
334
338
  on_mouse_up: EventType[()] | None = None,
335
339
  on_scroll: EventType[()] | None = None,
340
+ on_scroll_end: EventType[()] | None = None,
336
341
  on_unmount: EventType[()] | None = None,
337
342
  **props,
338
343
  ) -> StyledUpload:
@@ -11,7 +11,7 @@ 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[
@@ -942,9 +942,9 @@ class CodeBlock(Component, MarkdownComponentMap):
942
942
  autofocus: bool | None = None,
943
943
  custom_attrs: dict[str, Var | Any] | None = None,
944
944
  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,
945
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
946
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
947
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
948
948
  on_focus: EventType[()] | None = None,
949
949
  on_mount: EventType[()] | None = None,
950
950
  on_mouse_down: EventType[()] | None = None,
@@ -955,6 +955,7 @@ class CodeBlock(Component, MarkdownComponentMap):
955
955
  on_mouse_over: EventType[()] | None = None,
956
956
  on_mouse_up: EventType[()] | None = None,
957
957
  on_scroll: EventType[()] | None = None,
958
+ on_scroll_end: EventType[()] | None = None,
958
959
  on_unmount: EventType[()] | None = None,
959
960
  **props,
960
961
  ) -> CodeBlock:
@@ -1582,9 +1583,9 @@ class CodeblockNamespace(ComponentNamespace):
1582
1583
  autofocus: bool | None = None,
1583
1584
  custom_attrs: dict[str, Var | Any] | None = None,
1584
1585
  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,
1586
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1587
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
1588
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1588
1589
  on_focus: EventType[()] | None = None,
1589
1590
  on_mount: EventType[()] | None = None,
1590
1591
  on_mouse_down: EventType[()] | None = None,
@@ -1595,6 +1596,7 @@ class CodeblockNamespace(ComponentNamespace):
1595
1596
  on_mouse_over: EventType[()] | None = None,
1596
1597
  on_mouse_up: EventType[()] | None = None,
1597
1598
  on_scroll: EventType[()] | None = None,
1599
+ on_scroll_end: EventType[()] | None = None,
1598
1600
  on_unmount: EventType[()] | None = None,
1599
1601
  **props,
1600
1602
  ) -> CodeBlock:
@@ -10,7 +10,7 @@ from typing import Any, Literal, TypedDict, overload
10
10
  from reflex.base import Base
11
11
  from reflex.components.component import NoSSRComponent
12
12
  from reflex.components.core.breakpoints import Breakpoints
13
- from reflex.event import EventType
13
+ from reflex.event import EventType, PointerEventInfo
14
14
  from reflex.utils.imports import ImportDict
15
15
  from reflex.utils.serializers import serializer
16
16
  from reflex.vars.base import Var
@@ -182,11 +182,11 @@ class DataEditor(NoSSRComponent):
182
182
  on_cell_clicked: EventType[()] | EventType[tuple[int, int]] | None = None,
183
183
  on_cell_context_menu: EventType[()] | EventType[tuple[int, int]] | None = None,
184
184
  on_cell_edited: EventType[()] | EventType[tuple[int, int]] | EventType[tuple[int, int], GridCell] | None = None,
185
- on_click: EventType[()] | None = None,
185
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
186
186
  on_column_resize: EventType[()] | EventType[GridColumn] | EventType[GridColumn, int] | None = None,
187
- on_context_menu: EventType[()] | None = None,
187
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
188
188
  on_delete: EventType[()] | EventType[GridSelection] | None = None,
189
- on_double_click: EventType[()] | None = None,
189
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
190
190
  on_finished_editing: EventType[()] | EventType[GridCell | None] | EventType[GridCell | None, tuple[int, int]] | None = None,
191
191
  on_focus: EventType[()] | None = None,
192
192
  on_group_header_clicked: EventType[()] | EventType[tuple[int, int]] | EventType[tuple[int, int], GridCell] | None = None,
@@ -206,6 +206,7 @@ class DataEditor(NoSSRComponent):
206
206
  on_mouse_up: EventType[()] | None = None,
207
207
  on_row_appended: EventType[()] | None = None,
208
208
  on_scroll: EventType[()] | None = None,
209
+ on_scroll_end: EventType[()] | None = None,
209
210
  on_selection_cleared: EventType[()] | None = None,
210
211
  on_unmount: EventType[()] | None = None,
211
212
  **props,
@@ -11,7 +11,7 @@ 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.components.props import NoExtrasAllowedProps
14
- from reflex.event import EventType
14
+ from reflex.event import EventType, PointerEventInfo
15
15
  from reflex.style import Style
16
16
  from reflex.vars.base import Var
17
17
  from reflex.vars.function import FunctionStringVar
@@ -924,9 +924,9 @@ class ShikiCodeBlock(Component, MarkdownComponentMap):
924
924
  autofocus: bool | None = None,
925
925
  custom_attrs: dict[str, Var | Any] | None = None,
926
926
  on_blur: EventType[()] | None = None,
927
- on_click: EventType[()] | None = None,
928
- on_context_menu: EventType[()] | None = None,
929
- on_double_click: EventType[()] | None = None,
927
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
928
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
929
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
930
930
  on_focus: EventType[()] | None = None,
931
931
  on_mount: EventType[()] | None = None,
932
932
  on_mouse_down: EventType[()] | None = None,
@@ -937,6 +937,7 @@ class ShikiCodeBlock(Component, MarkdownComponentMap):
937
937
  on_mouse_over: EventType[()] | None = None,
938
938
  on_mouse_up: EventType[()] | None = None,
939
939
  on_scroll: EventType[()] | None = None,
940
+ on_scroll_end: EventType[()] | None = None,
940
941
  on_unmount: EventType[()] | None = None,
941
942
  **props,
942
943
  ) -> ShikiCodeBlock:
@@ -1542,9 +1543,9 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
1542
1543
  autofocus: bool | None = None,
1543
1544
  custom_attrs: dict[str, Var | Any] | None = None,
1544
1545
  on_blur: EventType[()] | None = None,
1545
- on_click: EventType[()] | None = None,
1546
- on_context_menu: EventType[()] | None = None,
1547
- on_double_click: EventType[()] | None = None,
1546
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1547
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
1548
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1548
1549
  on_focus: EventType[()] | None = None,
1549
1550
  on_mount: EventType[()] | None = None,
1550
1551
  on_mouse_down: EventType[()] | None = None,
@@ -1555,6 +1556,7 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
1555
1556
  on_mouse_over: EventType[()] | None = None,
1556
1557
  on_mouse_up: EventType[()] | None = None,
1557
1558
  on_scroll: EventType[()] | None = None,
1559
+ on_scroll_end: EventType[()] | None = None,
1558
1560
  on_unmount: EventType[()] | None = None,
1559
1561
  **props,
1560
1562
  ) -> ShikiHighLevelCodeBlock:
@@ -2163,9 +2165,9 @@ class CodeblockNamespace(ComponentNamespace):
2163
2165
  autofocus: bool | None = None,
2164
2166
  custom_attrs: dict[str, Var | Any] | None = None,
2165
2167
  on_blur: EventType[()] | None = None,
2166
- on_click: EventType[()] | None = None,
2167
- on_context_menu: EventType[()] | None = None,
2168
- on_double_click: EventType[()] | None = None,
2168
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
2169
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
2170
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
2169
2171
  on_focus: EventType[()] | None = None,
2170
2172
  on_mount: EventType[()] | None = None,
2171
2173
  on_mouse_down: EventType[()] | None = None,
@@ -2176,6 +2178,7 @@ class CodeblockNamespace(ComponentNamespace):
2176
2178
  on_mouse_over: EventType[()] | None = None,
2177
2179
  on_mouse_up: EventType[()] | None = None,
2178
2180
  on_scroll: EventType[()] | None = None,
2181
+ on_scroll_end: EventType[()] | None = None,
2179
2182
  on_unmount: EventType[()] | None = None,
2180
2183
  **props,
2181
2184
  ) -> ShikiHighLevelCodeBlock: