reflex 0.6.4a3__py3-none-any.whl → 0.6.5__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 (228) hide show
  1. reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -14
  2. reflex/.templates/jinja/web/pages/utils.js.jinja2 +4 -8
  3. reflex/.templates/web/components/shiki/code.js +16 -11
  4. reflex/.templates/web/utils/state.js +29 -21
  5. reflex/__init__.py +4 -0
  6. reflex/__init__.pyi +4 -0
  7. reflex/app.py +148 -154
  8. reflex/app_mixins/lifespan.py +5 -1
  9. reflex/app_mixins/middleware.py +3 -1
  10. reflex/app_mixins/mixin.py +3 -2
  11. reflex/base.py +2 -4
  12. reflex/compiler/compiler.py +111 -37
  13. reflex/components/base/app_wrap.pyi +17 -17
  14. reflex/components/base/bare.py +72 -3
  15. reflex/components/base/body.pyi +17 -17
  16. reflex/components/base/document.pyi +81 -81
  17. reflex/components/base/error_boundary.pyi +25 -18
  18. reflex/components/base/fragment.pyi +17 -17
  19. reflex/components/base/head.pyi +33 -33
  20. reflex/components/base/link.pyi +33 -33
  21. reflex/components/base/meta.pyi +65 -65
  22. reflex/components/base/script.py +4 -4
  23. reflex/components/base/script.pyi +23 -20
  24. reflex/components/component.py +250 -31
  25. reflex/components/core/banner.py +1 -1
  26. reflex/components/core/banner.pyi +81 -81
  27. reflex/components/core/client_side_routing.pyi +33 -33
  28. reflex/components/core/clipboard.py +2 -2
  29. reflex/components/core/clipboard.pyi +24 -18
  30. reflex/components/core/debounce.py +2 -2
  31. reflex/components/core/debounce.pyi +18 -18
  32. reflex/components/core/html.pyi +17 -17
  33. reflex/components/core/upload.py +90 -28
  34. reflex/components/core/upload.pyi +128 -72
  35. reflex/components/datadisplay/code.py +55 -40
  36. reflex/components/datadisplay/code.pyi +46 -44
  37. reflex/components/datadisplay/dataeditor.py +21 -20
  38. reflex/components/datadisplay/dataeditor.pyi +103 -35
  39. reflex/components/datadisplay/shiki_code_block.py +60 -27
  40. reflex/components/datadisplay/shiki_code_block.pyi +86 -65
  41. reflex/components/dynamic.py +9 -5
  42. reflex/components/el/element.pyi +17 -17
  43. reflex/components/el/elements/base.pyi +17 -17
  44. reflex/components/el/elements/forms.py +12 -3
  45. reflex/components/el/elements/forms.pyi +293 -233
  46. reflex/components/el/elements/inline.pyi +449 -449
  47. reflex/components/el/elements/media.pyi +401 -401
  48. reflex/components/el/elements/metadata.pyi +97 -97
  49. reflex/components/el/elements/other.pyi +113 -113
  50. reflex/components/el/elements/scripts.pyi +49 -49
  51. reflex/components/el/elements/sectioning.pyi +241 -241
  52. reflex/components/el/elements/tables.pyi +161 -161
  53. reflex/components/el/elements/typography.pyi +241 -241
  54. reflex/components/gridjs/datatable.pyi +33 -33
  55. reflex/components/lucide/icon.py +1 -1
  56. reflex/components/lucide/icon.pyi +33 -33
  57. reflex/components/markdown/markdown.py +180 -49
  58. reflex/components/markdown/markdown.pyi +36 -19
  59. reflex/components/moment/moment.py +17 -21
  60. reflex/components/moment/moment.pyi +26 -21
  61. reflex/components/next/base.pyi +17 -17
  62. reflex/components/next/image.py +3 -3
  63. reflex/components/next/image.pyi +21 -19
  64. reflex/components/next/link.pyi +17 -17
  65. reflex/components/next/video.pyi +17 -17
  66. reflex/components/plotly/plotly.py +79 -78
  67. reflex/components/plotly/plotly.pyi +91 -41
  68. reflex/components/props.py +34 -0
  69. reflex/components/radix/primitives/accordion.py +15 -8
  70. reflex/components/radix/primitives/accordion.pyi +121 -118
  71. reflex/components/radix/primitives/base.pyi +33 -33
  72. reflex/components/radix/primitives/drawer.py +41 -20
  73. reflex/components/radix/primitives/drawer.pyi +279 -190
  74. reflex/components/radix/primitives/form.py +2 -2
  75. reflex/components/radix/primitives/form.pyi +200 -167
  76. reflex/components/radix/primitives/progress.pyi +81 -81
  77. reflex/components/radix/primitives/slider.pyi +89 -83
  78. reflex/components/radix/themes/base.py +30 -1
  79. reflex/components/radix/themes/base.pyi +286 -113
  80. reflex/components/radix/themes/color_mode.py +17 -9
  81. reflex/components/radix/themes/color_mode.pyi +68 -56
  82. reflex/components/radix/themes/components/alert_dialog.py +8 -5
  83. reflex/components/radix/themes/components/alert_dialog.pyi +125 -117
  84. reflex/components/radix/themes/components/aspect_ratio.pyi +17 -17
  85. reflex/components/radix/themes/components/avatar.py +1 -5
  86. reflex/components/radix/themes/components/avatar.pyi +17 -17
  87. reflex/components/radix/themes/components/badge.py +1 -5
  88. reflex/components/radix/themes/components/badge.pyi +17 -17
  89. reflex/components/radix/themes/components/button.pyi +18 -21
  90. reflex/components/radix/themes/components/callout.py +1 -4
  91. reflex/components/radix/themes/components/callout.pyi +81 -81
  92. reflex/components/radix/themes/components/card.py +1 -3
  93. reflex/components/radix/themes/components/card.pyi +17 -17
  94. reflex/components/radix/themes/components/checkbox.py +4 -8
  95. reflex/components/radix/themes/components/checkbox.pyi +61 -52
  96. reflex/components/radix/themes/components/checkbox_cards.pyi +33 -33
  97. reflex/components/radix/themes/components/checkbox_group.pyi +33 -33
  98. reflex/components/radix/themes/components/context_menu.py +121 -28
  99. reflex/components/radix/themes/components/context_menu.pyi +250 -147
  100. reflex/components/radix/themes/components/data_list.pyi +65 -65
  101. reflex/components/radix/themes/components/dialog.py +11 -11
  102. reflex/components/radix/themes/components/dialog.pyi +135 -120
  103. reflex/components/radix/themes/components/dropdown_menu.py +14 -25
  104. reflex/components/radix/themes/components/dropdown_menu.pyi +157 -145
  105. reflex/components/radix/themes/components/hover_card.py +19 -7
  106. reflex/components/radix/themes/components/hover_card.pyi +102 -67
  107. reflex/components/radix/themes/components/icon_button.pyi +18 -21
  108. reflex/components/radix/themes/components/inset.py +1 -3
  109. reflex/components/radix/themes/components/inset.pyi +17 -17
  110. reflex/components/radix/themes/components/popover.py +22 -13
  111. reflex/components/radix/themes/components/popover.pyi +98 -72
  112. reflex/components/radix/themes/components/progress.pyi +17 -17
  113. reflex/components/radix/themes/components/radio.pyi +17 -17
  114. reflex/components/radix/themes/components/radio_cards.py +2 -2
  115. reflex/components/radix/themes/components/radio_cards.pyi +37 -34
  116. reflex/components/radix/themes/components/radio_group.py +3 -7
  117. reflex/components/radix/themes/components/radio_group.pyi +69 -66
  118. reflex/components/radix/themes/components/scroll_area.py +1 -3
  119. reflex/components/radix/themes/components/scroll_area.pyi +17 -17
  120. reflex/components/radix/themes/components/segmented_control.pyi +37 -34
  121. reflex/components/radix/themes/components/select.py +7 -11
  122. reflex/components/radix/themes/components/select.pyi +175 -154
  123. reflex/components/radix/themes/components/separator.py +1 -4
  124. reflex/components/radix/themes/components/separator.pyi +17 -17
  125. reflex/components/radix/themes/components/skeleton.pyi +17 -17
  126. reflex/components/radix/themes/components/slider.py +12 -21
  127. reflex/components/radix/themes/components/slider.pyi +47 -25
  128. reflex/components/radix/themes/components/spinner.py +1 -4
  129. reflex/components/radix/themes/components/spinner.pyi +17 -17
  130. reflex/components/radix/themes/components/switch.py +3 -6
  131. reflex/components/radix/themes/components/switch.pyi +21 -18
  132. reflex/components/radix/themes/components/table.py +21 -5
  133. reflex/components/radix/themes/components/table.pyi +392 -116
  134. reflex/components/radix/themes/components/tabs.py +3 -6
  135. reflex/components/radix/themes/components/tabs.pyi +89 -83
  136. reflex/components/radix/themes/components/text_area.py +1 -5
  137. reflex/components/radix/themes/components/text_area.pyi +43 -20
  138. reflex/components/radix/themes/components/text_field.py +1 -5
  139. reflex/components/radix/themes/components/text_field.pyi +101 -55
  140. reflex/components/radix/themes/components/tooltip.py +5 -7
  141. reflex/components/radix/themes/components/tooltip.pyi +25 -22
  142. reflex/components/radix/themes/layout/base.py +2 -27
  143. reflex/components/radix/themes/layout/base.pyi +82 -82
  144. reflex/components/radix/themes/layout/box.pyi +17 -17
  145. reflex/components/radix/themes/layout/center.pyi +17 -17
  146. reflex/components/radix/themes/layout/container.pyi +17 -17
  147. reflex/components/radix/themes/layout/flex.py +1 -6
  148. reflex/components/radix/themes/layout/flex.pyi +17 -17
  149. reflex/components/radix/themes/layout/grid.py +1 -6
  150. reflex/components/radix/themes/layout/grid.pyi +17 -17
  151. reflex/components/radix/themes/layout/list.py +20 -15
  152. reflex/components/radix/themes/layout/list.pyi +175 -92
  153. reflex/components/radix/themes/layout/section.pyi +17 -17
  154. reflex/components/radix/themes/layout/spacer.pyi +17 -17
  155. reflex/components/radix/themes/layout/stack.py +6 -6
  156. reflex/components/radix/themes/layout/stack.pyi +91 -62
  157. reflex/components/radix/themes/typography/blockquote.py +2 -8
  158. reflex/components/radix/themes/typography/blockquote.pyi +17 -17
  159. reflex/components/radix/themes/typography/code.py +4 -10
  160. reflex/components/radix/themes/typography/code.pyi +19 -18
  161. reflex/components/radix/themes/typography/heading.py +4 -11
  162. reflex/components/radix/themes/typography/heading.pyi +19 -18
  163. reflex/components/radix/themes/typography/link.py +4 -10
  164. reflex/components/radix/themes/typography/link.pyi +19 -18
  165. reflex/components/radix/themes/typography/text.py +4 -11
  166. reflex/components/radix/themes/typography/text.pyi +115 -114
  167. reflex/components/react_player/audio.pyi +58 -33
  168. reflex/components/react_player/react_player.py +17 -17
  169. reflex/components/react_player/react_player.pyi +55 -33
  170. reflex/components/react_player/video.pyi +58 -33
  171. reflex/components/recharts/cartesian.py +45 -45
  172. reflex/components/recharts/cartesian.pyi +389 -304
  173. reflex/components/recharts/charts.py +22 -22
  174. reflex/components/recharts/charts.pyi +226 -179
  175. reflex/components/recharts/general.py +26 -27
  176. reflex/components/recharts/general.pyi +106 -99
  177. reflex/components/recharts/polar.py +33 -33
  178. reflex/components/recharts/polar.pyi +70 -64
  179. reflex/components/recharts/recharts.pyi +33 -33
  180. reflex/components/sonner/toast.py +9 -36
  181. reflex/components/sonner/toast.pyi +20 -24
  182. reflex/components/suneditor/editor.py +8 -8
  183. reflex/components/suneditor/editor.pyi +50 -25
  184. reflex/components/tags/iter_tag.py +1 -10
  185. reflex/components/tags/tag.py +1 -4
  186. reflex/config.py +198 -35
  187. reflex/constants/__init__.py +4 -16
  188. reflex/constants/base.py +7 -14
  189. reflex/constants/colors.py +0 -1
  190. reflex/constants/installer.py +12 -7
  191. reflex/constants/state.py +4 -0
  192. reflex/custom_components/custom_components.py +6 -6
  193. reflex/event.py +486 -241
  194. reflex/experimental/client_state.py +9 -9
  195. reflex/experimental/layout.py +2 -2
  196. reflex/experimental/layout.pyi +95 -87
  197. reflex/experimental/misc.py +1 -1
  198. reflex/istate/__init__.py +1 -0
  199. reflex/istate/proxy.py +33 -0
  200. reflex/istate/wrappers.py +27 -0
  201. reflex/model.py +7 -7
  202. reflex/page.py +2 -1
  203. reflex/reflex.py +142 -8
  204. reflex/state.py +133 -46
  205. reflex/testing.py +9 -7
  206. reflex/utils/console.py +0 -1
  207. reflex/utils/exceptions.py +31 -3
  208. reflex/utils/exec.py +33 -14
  209. reflex/utils/format.py +15 -12
  210. reflex/utils/net.py +1 -1
  211. reflex/utils/path_ops.py +2 -2
  212. reflex/utils/prerequisites.py +82 -46
  213. reflex/utils/pyi_generator.py +63 -20
  214. reflex/utils/registry.py +1 -1
  215. reflex/utils/serializers.py +75 -36
  216. reflex/utils/telemetry.py +3 -2
  217. reflex/utils/types.py +125 -10
  218. reflex/vars/base.py +131 -119
  219. reflex/vars/function.py +59 -12
  220. reflex/vars/number.py +3 -1
  221. reflex/vars/object.py +30 -24
  222. reflex/vars/sequence.py +7 -7
  223. {reflex-0.6.4a3.dist-info → reflex-0.6.5.dist-info}/METADATA +3 -3
  224. reflex-0.6.5.dist-info/RECORD +394 -0
  225. reflex-0.6.4a3.dist-info/RECORD +0 -391
  226. {reflex-0.6.4a3.dist-info → reflex-0.6.5.dist-info}/LICENSE +0 -0
  227. {reflex-0.6.4a3.dist-info → reflex-0.6.5.dist-info}/WHEEL +0 -0
  228. {reflex-0.6.4a3.dist-info → reflex-0.6.5.dist-info}/entry_points.txt +0 -0
@@ -7,7 +7,7 @@ import dataclasses
7
7
  from typing import Any, Dict, Optional, Union, overload
8
8
 
9
9
  from reflex.components.component import NoSSRComponent
10
- from reflex.event import EventType
10
+ from reflex.event import BASE_STATE, EventType
11
11
  from reflex.style import Style
12
12
  from reflex.utils.imports import ImportDict
13
13
  from reflex.vars.base import Var
@@ -51,31 +51,34 @@ class Moment(NoSSRComponent):
51
51
  unix: Optional[Union[Var[bool], bool]] = None,
52
52
  local: Optional[Union[Var[bool], bool]] = None,
53
53
  tz: Optional[Union[Var[str], str]] = None,
54
+ locale: Optional[Union[Var[str], str]] = None,
54
55
  style: Optional[Style] = None,
55
56
  key: Optional[Any] = None,
56
57
  id: Optional[Any] = None,
57
58
  class_name: Optional[Any] = None,
58
59
  autofocus: Optional[bool] = None,
59
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
60
- on_blur: Optional[EventType[[]]] = None,
61
- on_change: Optional[EventType[str]] = None,
62
- on_click: Optional[EventType[[]]] = None,
63
- on_context_menu: Optional[EventType[[]]] = None,
64
- on_double_click: Optional[EventType[[]]] = None,
65
- on_focus: Optional[EventType[[]]] = None,
66
- on_mount: Optional[EventType[[]]] = None,
67
- on_mouse_down: Optional[EventType[[]]] = None,
68
- on_mouse_enter: Optional[EventType[[]]] = None,
69
- on_mouse_leave: Optional[EventType[[]]] = None,
70
- on_mouse_move: Optional[EventType[[]]] = None,
71
- on_mouse_out: Optional[EventType[[]]] = None,
72
- on_mouse_over: Optional[EventType[[]]] = None,
73
- on_mouse_up: Optional[EventType[[]]] = None,
74
- on_scroll: Optional[EventType[[]]] = None,
75
- on_unmount: Optional[EventType[[]]] = None,
60
+ custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
61
+ on_blur: Optional[EventType[[], BASE_STATE]] = None,
62
+ on_change: Optional[
63
+ Union[EventType[[], BASE_STATE], EventType[[str], BASE_STATE]]
64
+ ] = None,
65
+ on_click: Optional[EventType[[], BASE_STATE]] = None,
66
+ on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
67
+ on_double_click: Optional[EventType[[], BASE_STATE]] = None,
68
+ on_focus: Optional[EventType[[], BASE_STATE]] = None,
69
+ on_mount: Optional[EventType[[], BASE_STATE]] = None,
70
+ on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
71
+ on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
72
+ on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
73
+ on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
74
+ on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
75
+ on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
76
+ on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
77
+ on_scroll: Optional[EventType[[], BASE_STATE]] = None,
78
+ on_unmount: Optional[EventType[[], BASE_STATE]] = None,
76
79
  **props,
77
80
  ) -> "Moment":
78
- """Create a Moment component.
81
+ """Create the component.
79
82
 
80
83
  Args:
81
84
  *children: The children of the component.
@@ -99,15 +102,17 @@ class Moment(NoSSRComponent):
99
102
  unix: Tells Moment to parse the given date value as a unix timestamp.
100
103
  local: Outputs the result in local time.
101
104
  tz: Display the date in the given timezone.
105
+ locale: The locale to use when rendering.
106
+ on_change: Fires when the date changes.
102
107
  style: The style of the component.
103
108
  key: A unique key for the component.
104
109
  id: The id for the component.
105
110
  class_name: The class name for the component.
106
111
  autofocus: Whether the component should take the focus once the page is loaded
107
112
  custom_attrs: custom attribute
108
- **props: The properties of the component.
113
+ **props: The props of the component.
109
114
 
110
115
  Returns:
111
- The Moment Component.
116
+ The component.
112
117
  """
113
118
  ...
@@ -6,7 +6,7 @@
6
6
  from typing import Any, Dict, Optional, Union, overload
7
7
 
8
8
  from reflex.components.component import Component
9
- from reflex.event import EventType
9
+ from reflex.event import BASE_STATE, EventType
10
10
  from reflex.style import Style
11
11
  from reflex.vars.base import Var
12
12
 
@@ -23,22 +23,22 @@ class NextComponent(Component):
23
23
  id: Optional[Any] = None,
24
24
  class_name: Optional[Any] = None,
25
25
  autofocus: Optional[bool] = None,
26
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
27
- on_blur: Optional[EventType[[]]] = None,
28
- on_click: Optional[EventType[[]]] = None,
29
- on_context_menu: Optional[EventType[[]]] = None,
30
- on_double_click: Optional[EventType[[]]] = None,
31
- on_focus: Optional[EventType[[]]] = None,
32
- on_mount: Optional[EventType[[]]] = None,
33
- on_mouse_down: Optional[EventType[[]]] = None,
34
- on_mouse_enter: Optional[EventType[[]]] = None,
35
- on_mouse_leave: Optional[EventType[[]]] = None,
36
- on_mouse_move: Optional[EventType[[]]] = None,
37
- on_mouse_out: Optional[EventType[[]]] = None,
38
- on_mouse_over: Optional[EventType[[]]] = None,
39
- on_mouse_up: Optional[EventType[[]]] = None,
40
- on_scroll: Optional[EventType[[]]] = None,
41
- on_unmount: Optional[EventType[[]]] = None,
26
+ custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
27
+ on_blur: Optional[EventType[[], BASE_STATE]] = None,
28
+ on_click: Optional[EventType[[], BASE_STATE]] = None,
29
+ on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
30
+ on_double_click: Optional[EventType[[], BASE_STATE]] = None,
31
+ on_focus: Optional[EventType[[], BASE_STATE]] = None,
32
+ on_mount: Optional[EventType[[], BASE_STATE]] = None,
33
+ on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
34
+ on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
35
+ on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
36
+ on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
37
+ on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
38
+ on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
39
+ on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
40
+ on_scroll: Optional[EventType[[], BASE_STATE]] = None,
41
+ on_unmount: Optional[EventType[[], BASE_STATE]] = None,
42
42
  **props,
43
43
  ) -> "NextComponent":
44
44
  """Create the component.
@@ -2,7 +2,7 @@
2
2
 
3
3
  from typing import Any, Literal, Optional, Union
4
4
 
5
- from reflex.event import EventHandler, empty_event
5
+ from reflex.event import EventHandler, no_args_event_spec
6
6
  from reflex.utils import types
7
7
  from reflex.vars.base import Var
8
8
 
@@ -56,10 +56,10 @@ class Image(NextComponent):
56
56
  blurDataURL: Var[str]
57
57
 
58
58
  # Fires when the image has loaded.
59
- on_load: EventHandler[empty_event]
59
+ on_load: EventHandler[no_args_event_spec]
60
60
 
61
61
  # Fires when the image has an error.
62
- on_error: EventHandler[empty_event]
62
+ on_error: EventHandler[no_args_event_spec]
63
63
 
64
64
  @classmethod
65
65
  def create(
@@ -5,7 +5,7 @@
5
5
  # ------------------------------------------------------
6
6
  from typing import Any, Dict, Literal, Optional, Union, overload
7
7
 
8
- from reflex.event import EventType
8
+ from reflex.event import BASE_STATE, EventType
9
9
  from reflex.style import Style
10
10
  from reflex.vars.base import Var
11
11
 
@@ -36,24 +36,24 @@ class Image(NextComponent):
36
36
  id: Optional[Any] = None,
37
37
  class_name: Optional[Any] = None,
38
38
  autofocus: Optional[bool] = None,
39
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
40
- on_blur: Optional[EventType[[]]] = None,
41
- on_click: Optional[EventType[[]]] = None,
42
- on_context_menu: Optional[EventType[[]]] = None,
43
- on_double_click: Optional[EventType[[]]] = None,
44
- on_error: Optional[EventType[[]]] = None,
45
- on_focus: Optional[EventType[[]]] = None,
46
- on_load: Optional[EventType[[]]] = None,
47
- on_mount: Optional[EventType[[]]] = None,
48
- on_mouse_down: Optional[EventType[[]]] = None,
49
- on_mouse_enter: Optional[EventType[[]]] = None,
50
- on_mouse_leave: Optional[EventType[[]]] = None,
51
- on_mouse_move: Optional[EventType[[]]] = None,
52
- on_mouse_out: Optional[EventType[[]]] = None,
53
- on_mouse_over: Optional[EventType[[]]] = None,
54
- on_mouse_up: Optional[EventType[[]]] = None,
55
- on_scroll: Optional[EventType[[]]] = None,
56
- on_unmount: Optional[EventType[[]]] = None,
39
+ custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
40
+ on_blur: Optional[EventType[[], BASE_STATE]] = None,
41
+ on_click: Optional[EventType[[], BASE_STATE]] = None,
42
+ on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
43
+ on_double_click: Optional[EventType[[], BASE_STATE]] = None,
44
+ on_error: Optional[EventType[[], BASE_STATE]] = None,
45
+ on_focus: Optional[EventType[[], BASE_STATE]] = None,
46
+ on_load: Optional[EventType[[], BASE_STATE]] = None,
47
+ on_mount: Optional[EventType[[], BASE_STATE]] = None,
48
+ on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
49
+ on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
50
+ on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
51
+ on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
52
+ on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
53
+ on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
54
+ on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
55
+ on_scroll: Optional[EventType[[], BASE_STATE]] = None,
56
+ on_unmount: Optional[EventType[[], BASE_STATE]] = None,
57
57
  **props,
58
58
  ) -> "Image":
59
59
  """Create an Image component from next/image.
@@ -72,6 +72,8 @@ class Image(NextComponent):
72
72
  placeholder: A placeholder to use while the image is loading. Possible values are blur, empty, or data:image/.... Defaults to empty.
73
73
  loading: Allows passing CSS styles to the underlying image element. style: Var[Any] The loading behavior of the image. Defaults to lazy. Can hurt performance, recommended to use `priority` instead.
74
74
  blurDataURL: A Data URL to be used as a placeholder image before the src image successfully loads. Only takes effect when combined with placeholder="blur".
75
+ on_load: Fires when the image has loaded.
76
+ on_error: Fires when the image has an error.
75
77
  style: The style of the component.
76
78
  key: A unique key for the component.
77
79
  id: The id for the component.
@@ -6,7 +6,7 @@
6
6
  from typing import Any, Dict, Optional, Union, overload
7
7
 
8
8
  from reflex.components.component import Component
9
- from reflex.event import EventType
9
+ from reflex.event import BASE_STATE, EventType
10
10
  from reflex.style import Style
11
11
  from reflex.vars.base import Var
12
12
 
@@ -23,22 +23,22 @@ class NextLink(Component):
23
23
  id: Optional[Any] = None,
24
24
  class_name: Optional[Any] = None,
25
25
  autofocus: Optional[bool] = None,
26
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
27
- on_blur: Optional[EventType[[]]] = None,
28
- on_click: Optional[EventType[[]]] = None,
29
- on_context_menu: Optional[EventType[[]]] = None,
30
- on_double_click: Optional[EventType[[]]] = None,
31
- on_focus: Optional[EventType[[]]] = None,
32
- on_mount: Optional[EventType[[]]] = None,
33
- on_mouse_down: Optional[EventType[[]]] = None,
34
- on_mouse_enter: Optional[EventType[[]]] = None,
35
- on_mouse_leave: Optional[EventType[[]]] = None,
36
- on_mouse_move: Optional[EventType[[]]] = None,
37
- on_mouse_out: Optional[EventType[[]]] = None,
38
- on_mouse_over: Optional[EventType[[]]] = None,
39
- on_mouse_up: Optional[EventType[[]]] = None,
40
- on_scroll: Optional[EventType[[]]] = None,
41
- on_unmount: Optional[EventType[[]]] = None,
26
+ custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
27
+ on_blur: Optional[EventType[[], BASE_STATE]] = None,
28
+ on_click: Optional[EventType[[], BASE_STATE]] = None,
29
+ on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
30
+ on_double_click: Optional[EventType[[], BASE_STATE]] = None,
31
+ on_focus: Optional[EventType[[], BASE_STATE]] = None,
32
+ on_mount: Optional[EventType[[], BASE_STATE]] = None,
33
+ on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
34
+ on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
35
+ on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
36
+ on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
37
+ on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
38
+ on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
39
+ on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
40
+ on_scroll: Optional[EventType[[], BASE_STATE]] = None,
41
+ on_unmount: Optional[EventType[[], BASE_STATE]] = None,
42
42
  **props,
43
43
  ) -> "NextLink":
44
44
  """Create the component.
@@ -6,7 +6,7 @@
6
6
  from typing import Any, Dict, Optional, Union, overload
7
7
 
8
8
  from reflex.components.component import Component
9
- from reflex.event import EventType
9
+ from reflex.event import BASE_STATE, EventType
10
10
  from reflex.style import Style
11
11
  from reflex.vars.base import Var
12
12
 
@@ -25,22 +25,22 @@ class Video(NextComponent):
25
25
  id: Optional[Any] = None,
26
26
  class_name: Optional[Any] = None,
27
27
  autofocus: Optional[bool] = None,
28
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
29
- on_blur: Optional[EventType[[]]] = None,
30
- on_click: Optional[EventType[[]]] = None,
31
- on_context_menu: Optional[EventType[[]]] = None,
32
- on_double_click: Optional[EventType[[]]] = None,
33
- on_focus: Optional[EventType[[]]] = None,
34
- on_mount: Optional[EventType[[]]] = None,
35
- on_mouse_down: Optional[EventType[[]]] = None,
36
- on_mouse_enter: Optional[EventType[[]]] = None,
37
- on_mouse_leave: Optional[EventType[[]]] = None,
38
- on_mouse_move: Optional[EventType[[]]] = None,
39
- on_mouse_out: Optional[EventType[[]]] = None,
40
- on_mouse_over: Optional[EventType[[]]] = None,
41
- on_mouse_up: Optional[EventType[[]]] = None,
42
- on_scroll: Optional[EventType[[]]] = None,
43
- on_unmount: Optional[EventType[[]]] = None,
28
+ custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
29
+ on_blur: Optional[EventType[[], BASE_STATE]] = None,
30
+ on_click: Optional[EventType[[], BASE_STATE]] = None,
31
+ on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
32
+ on_double_click: Optional[EventType[[], BASE_STATE]] = None,
33
+ on_focus: Optional[EventType[[], BASE_STATE]] = None,
34
+ on_mount: Optional[EventType[[], BASE_STATE]] = None,
35
+ on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
36
+ on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
37
+ on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
38
+ on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
39
+ on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
40
+ on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
41
+ on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
42
+ on_scroll: Optional[EventType[[], BASE_STATE]] = None,
43
+ on_unmount: Optional[EventType[[], BASE_STATE]] = None,
44
44
  **props,
45
45
  ) -> "Video":
46
46
  """Create a Video component.
@@ -2,12 +2,13 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Any, Dict, List
5
+ from typing import Any, Dict, List, Tuple, Union
6
+
7
+ from typing_extensions import TypedDict, TypeVar
6
8
 
7
- from reflex.base import Base
8
9
  from reflex.components.component import Component, NoSSRComponent
9
10
  from reflex.components.core.cond import color_mode_cond
10
- from reflex.event import EventHandler
11
+ from reflex.event import EventHandler, no_args_event_spec
11
12
  from reflex.utils import console
12
13
  from reflex.vars.base import LiteralVar, Var
13
14
 
@@ -21,19 +22,7 @@ except ImportError:
21
22
  Template = Any # type: ignore
22
23
 
23
24
 
24
- def _event_data_signature(e0: Var) -> List[Any]:
25
- """For plotly events with event data and no points.
26
-
27
- Args:
28
- e0: The event data.
29
-
30
- Returns:
31
- The event key extracted from the event data (if defined).
32
- """
33
- return [Var(_js_expr=f"{e0}?.event")]
34
-
35
-
36
- def _event_points_data_signature(e0: Var) -> List[Any]:
25
+ def _event_points_data_signature(e0: Var) -> Tuple[Var[List[Point]]]:
37
26
  """For plotly events with event data containing a point array.
38
27
 
39
28
  Args:
@@ -42,51 +31,63 @@ def _event_points_data_signature(e0: Var) -> List[Any]:
42
31
  Returns:
43
32
  The event data and the extracted points.
44
33
  """
45
- return [
46
- Var(_js_expr=f"{e0}?.event"),
47
- Var(_js_expr=f"extractPoints({e0}?.points)"),
34
+ return (Var(_js_expr=f"extractPoints({e0}?.points)"),)
35
+
36
+
37
+ T = TypeVar("T")
38
+
39
+ ItemOrList = Union[T, List[T]]
40
+
41
+
42
+ class BBox(TypedDict):
43
+ """Bounding box for a point in a plotly graph."""
44
+
45
+ x0: Union[float, int, None]
46
+ x1: Union[float, int, None]
47
+ y0: Union[float, int, None]
48
+ y1: Union[float, int, None]
49
+ z0: Union[float, int, None]
50
+ z1: Union[float, int, None]
51
+
52
+
53
+ class Point(TypedDict):
54
+ """A point in a plotly graph."""
55
+
56
+ x: Union[float, int, None]
57
+ y: Union[float, int, None]
58
+ z: Union[float, int, None]
59
+ lat: Union[float, int, None]
60
+ lon: Union[float, int, None]
61
+ curveNumber: Union[int, None]
62
+ pointNumber: Union[int, None]
63
+ pointNumbers: Union[List[int], None]
64
+ pointIndex: Union[int, None]
65
+ markerColor: Union[
66
+ ItemOrList[
67
+ ItemOrList[
68
+ Union[
69
+ float,
70
+ int,
71
+ str,
72
+ None,
73
+ ]
74
+ ]
75
+ ],
76
+ None,
48
77
  ]
49
-
50
-
51
- class _ButtonClickData(Base):
52
- """Event data structure for plotly UI buttons."""
53
-
54
- menu: Any
55
- button: Any
56
- active: Any
57
-
58
-
59
- def _button_click_signature(e0: _ButtonClickData) -> List[Any]:
60
- """For plotly button click events.
61
-
62
- Args:
63
- e0: The button click data.
64
-
65
- Returns:
66
- The menu, button, and active state.
67
- """
68
- return [e0.menu, e0.button, e0.active]
69
-
70
-
71
- def _passthrough_signature(e0: Var) -> List[Any]:
72
- """For plotly events with arbitrary serializable data, passed through directly.
73
-
74
- Args:
75
- e0: The event data.
76
-
77
- Returns:
78
- The event data.
79
- """
80
- return [e0]
81
-
82
-
83
- def _null_signature() -> List[Any]:
84
- """For plotly events with no data or non-serializable data. Nothing passed through.
85
-
86
- Returns:
87
- An empty list (nothing passed through).
88
- """
89
- return []
78
+ markerSize: Union[
79
+ ItemOrList[
80
+ ItemOrList[
81
+ Union[
82
+ float,
83
+ int,
84
+ None,
85
+ ]
86
+ ]
87
+ ],
88
+ None,
89
+ ]
90
+ bbox: Union[BBox, None]
90
91
 
91
92
 
92
93
  class Plotly(NoSSRComponent):
@@ -116,49 +117,49 @@ class Plotly(NoSSRComponent):
116
117
  use_resize_handler: Var[bool] = LiteralVar.create(True)
117
118
 
118
119
  # Fired after the plot is redrawn.
119
- on_after_plot: EventHandler[_passthrough_signature]
120
+ on_after_plot: EventHandler[no_args_event_spec]
120
121
 
121
122
  # Fired after the plot was animated.
122
- on_animated: EventHandler[_null_signature]
123
+ on_animated: EventHandler[no_args_event_spec]
123
124
 
124
125
  # Fired while animating a single frame (does not currently pass data through).
125
- on_animating_frame: EventHandler[_null_signature]
126
+ on_animating_frame: EventHandler[no_args_event_spec]
126
127
 
127
128
  # Fired when an animation is interrupted (to start a new animation for example).
128
- on_animation_interrupted: EventHandler[_null_signature]
129
+ on_animation_interrupted: EventHandler[no_args_event_spec]
129
130
 
130
131
  # Fired when the plot is responsively sized.
131
- on_autosize: EventHandler[_event_data_signature]
132
+ on_autosize: EventHandler[no_args_event_spec]
132
133
 
133
134
  # Fired whenever mouse moves over a plot.
134
- on_before_hover: EventHandler[_event_data_signature]
135
+ on_before_hover: EventHandler[no_args_event_spec]
135
136
 
136
137
  # Fired when a plotly UI button is clicked.
137
- on_button_clicked: EventHandler[_button_click_signature]
138
+ on_button_clicked: EventHandler[no_args_event_spec]
138
139
 
139
140
  # Fired when the plot is clicked.
140
141
  on_click: EventHandler[_event_points_data_signature]
141
142
 
142
143
  # Fired when a selection is cleared (via double click).
143
- on_deselect: EventHandler[_null_signature]
144
+ on_deselect: EventHandler[no_args_event_spec]
144
145
 
145
146
  # Fired when the plot is double clicked.
146
- on_double_click: EventHandler[_passthrough_signature]
147
+ on_double_click: EventHandler[no_args_event_spec]
147
148
 
148
149
  # Fired when a plot element is hovered over.
149
150
  on_hover: EventHandler[_event_points_data_signature]
150
151
 
151
152
  # Fired after the plot is layed out (zoom, pan, etc).
152
- on_relayout: EventHandler[_passthrough_signature]
153
+ on_relayout: EventHandler[no_args_event_spec]
153
154
 
154
155
  # Fired while the plot is being layed out.
155
- on_relayouting: EventHandler[_passthrough_signature]
156
+ on_relayouting: EventHandler[no_args_event_spec]
156
157
 
157
158
  # Fired after the plot style is changed.
158
- on_restyle: EventHandler[_passthrough_signature]
159
+ on_restyle: EventHandler[no_args_event_spec]
159
160
 
160
161
  # Fired after the plot is redrawn.
161
- on_redraw: EventHandler[_event_data_signature]
162
+ on_redraw: EventHandler[no_args_event_spec]
162
163
 
163
164
  # Fired after selecting plot elements.
164
165
  on_selected: EventHandler[_event_points_data_signature]
@@ -167,10 +168,10 @@ class Plotly(NoSSRComponent):
167
168
  on_selecting: EventHandler[_event_points_data_signature]
168
169
 
169
170
  # Fired while an animation is occuring.
170
- on_transitioning: EventHandler[_event_data_signature]
171
+ on_transitioning: EventHandler[no_args_event_spec]
171
172
 
172
173
  # Fired when a transition is stopped early.
173
- on_transition_interrupted: EventHandler[_event_data_signature]
174
+ on_transition_interrupted: EventHandler[no_args_event_spec]
174
175
 
175
176
  # Fired when a hovered element is no longer hovered.
176
177
  on_unhover: EventHandler[_event_points_data_signature]
@@ -216,8 +217,8 @@ const extractPoints = (points) => {
216
217
  pointNumber: point.pointNumber,
217
218
  pointNumbers: point.pointNumbers,
218
219
  pointIndex: point.pointIndex,
219
- 'marker.color': point['marker.color'],
220
- 'marker.size': point['marker.size'],
220
+ markerColor: point['marker.color'],
221
+ markerSize: point['marker.size'],
221
222
  bbox: bbox,
222
223
  })
223
224
  })
@@ -264,7 +265,7 @@ const extractPoints = (points) => {
264
265
  merge_dicts.append(layout_dict)
265
266
  if self.template is not None:
266
267
  template_dict = LiteralVar.create({"layout": {"template": self.template}})
267
- merge_dicts.append(template_dict.without_data())
268
+ merge_dicts.append(template_dict._without_data())
268
269
  if merge_dicts:
269
270
  tag.special_props.append(
270
271
  # Merge all dictionaries and spread the result over props.