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
@@ -4,18 +4,17 @@
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
- from reflex.components.component import Component
9
+ from reflex.components.component import NoSSRComponent
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 ImportDict
13
13
  from reflex.vars.base import Var
14
14
 
15
- class Gridjs(Component):
16
- @overload
15
+ class Gridjs(NoSSRComponent):
17
16
  @classmethod
18
- def create( # type: ignore
17
+ def create(
19
18
  cls,
20
19
  *children,
21
20
  style: Sequence[Mapping[str, Any]]
@@ -30,9 +29,9 @@ class Gridjs(Component):
30
29
  autofocus: bool | None = None,
31
30
  custom_attrs: dict[str, Var | Any] | None = None,
32
31
  on_blur: EventType[()] | None = None,
33
- on_click: EventType[()] | None = None,
34
- on_context_menu: EventType[()] | None = None,
35
- 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,
36
35
  on_focus: EventType[()] | None = None,
37
36
  on_mount: EventType[()] | None = None,
38
37
  on_mouse_down: EventType[()] | None = None,
@@ -43,6 +42,7 @@ class Gridjs(Component):
43
42
  on_mouse_over: EventType[()] | None = None,
44
43
  on_mouse_up: EventType[()] | None = None,
45
44
  on_scroll: EventType[()] | None = None,
45
+ on_scroll_end: EventType[()] | None = None,
46
46
  on_unmount: EventType[()] | None = None,
47
47
  **props,
48
48
  ) -> Gridjs:
@@ -64,9 +64,8 @@ class Gridjs(Component):
64
64
  """
65
65
 
66
66
  class DataTable(Gridjs):
67
- @overload
68
67
  @classmethod
69
- def create( # type: ignore
68
+ def create(
70
69
  cls,
71
70
  *children,
72
71
  data: Any | None = None,
@@ -87,9 +86,9 @@ class DataTable(Gridjs):
87
86
  autofocus: bool | None = None,
88
87
  custom_attrs: dict[str, Var | Any] | None = None,
89
88
  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,
89
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
90
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
91
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
93
92
  on_focus: EventType[()] | None = None,
94
93
  on_mount: EventType[()] | None = None,
95
94
  on_mouse_down: EventType[()] | None = None,
@@ -100,6 +99,7 @@ class DataTable(Gridjs):
100
99
  on_mouse_over: EventType[()] | None = None,
101
100
  on_mouse_up: EventType[()] | None = None,
102
101
  on_scroll: EventType[()] | None = None,
102
+ on_scroll_end: EventType[()] | None = None,
103
103
  on_unmount: EventType[()] | None = None,
104
104
  **props,
105
105
  ) -> DataTable:
@@ -6,11 +6,13 @@ from reflex.utils.imports import ImportVar
6
6
  from reflex.vars.base import LiteralVar, Var
7
7
  from reflex.vars.sequence import LiteralStringVar, StringVar
8
8
 
9
+ LUCIDE_LIBRARY = "lucide-react@0.511.0"
10
+
9
11
 
10
12
  class LucideIconComponent(Component):
11
13
  """Lucide Icon Component."""
12
14
 
13
- library = "lucide-react@0.511.0"
15
+ library = LUCIDE_LIBRARY
14
16
 
15
17
 
16
18
  class Icon(LucideIconComponent):
@@ -96,7 +98,9 @@ class DynamicIcon(LucideIconComponent):
96
98
  _imports = super()._get_imports()
97
99
  if self.library:
98
100
  _imports.pop(self.library)
99
- _imports["lucide-react"] = [ImportVar("DynamicIcon", package_path="/dynamic")]
101
+ _imports[LUCIDE_LIBRARY] = [
102
+ ImportVar("DynamicIcon", package_path="/dynamic.mjs")
103
+ ]
100
104
  return _imports
101
105
 
102
106
 
@@ -4,17 +4,18 @@
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
+ LUCIDE_LIBRARY = "lucide-react@0.511.0"
15
+
14
16
  class LucideIconComponent(Component):
15
- @overload
16
17
  @classmethod
17
- def create( # type: ignore
18
+ def create(
18
19
  cls,
19
20
  *children,
20
21
  style: Sequence[Mapping[str, Any]]
@@ -29,9 +30,9 @@ class LucideIconComponent(Component):
29
30
  autofocus: bool | None = None,
30
31
  custom_attrs: dict[str, Var | Any] | None = None,
31
32
  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,
33
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
34
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
35
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
35
36
  on_focus: EventType[()] | None = None,
36
37
  on_mount: EventType[()] | None = None,
37
38
  on_mouse_down: EventType[()] | None = None,
@@ -42,6 +43,7 @@ class LucideIconComponent(Component):
42
43
  on_mouse_over: EventType[()] | None = None,
43
44
  on_mouse_up: EventType[()] | None = None,
44
45
  on_scroll: EventType[()] | None = None,
46
+ on_scroll_end: EventType[()] | None = None,
45
47
  on_unmount: EventType[()] | None = None,
46
48
  **props,
47
49
  ) -> LucideIconComponent:
@@ -63,9 +65,8 @@ class LucideIconComponent(Component):
63
65
  """
64
66
 
65
67
  class Icon(LucideIconComponent):
66
- @overload
67
68
  @classmethod
68
- def create( # type: ignore
69
+ def create(
69
70
  cls,
70
71
  *children,
71
72
  size: Var[int] | int | None = None,
@@ -81,9 +82,9 @@ class Icon(LucideIconComponent):
81
82
  autofocus: bool | None = None,
82
83
  custom_attrs: dict[str, Var | Any] | None = None,
83
84
  on_blur: EventType[()] | None = None,
84
- on_click: EventType[()] | None = None,
85
- on_context_menu: EventType[()] | None = None,
86
- on_double_click: EventType[()] | None = None,
85
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
86
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
87
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
87
88
  on_focus: EventType[()] | None = None,
88
89
  on_mount: EventType[()] | None = None,
89
90
  on_mouse_down: EventType[()] | None = None,
@@ -94,6 +95,7 @@ class Icon(LucideIconComponent):
94
95
  on_mouse_over: EventType[()] | None = None,
95
96
  on_mouse_up: EventType[()] | None = None,
96
97
  on_scroll: EventType[()] | None = None,
98
+ on_scroll_end: EventType[()] | None = None,
97
99
  on_unmount: EventType[()] | None = None,
98
100
  **props,
99
101
  ) -> Icon:
@@ -122,9 +124,8 @@ class Icon(LucideIconComponent):
122
124
  """
123
125
 
124
126
  class DynamicIcon(LucideIconComponent):
125
- @overload
126
127
  @classmethod
127
- def create( # type: ignore
128
+ def create(
128
129
  cls,
129
130
  *children,
130
131
  name: Var[str] | str | None = None,
@@ -140,9 +141,9 @@ class DynamicIcon(LucideIconComponent):
140
141
  autofocus: bool | None = None,
141
142
  custom_attrs: dict[str, Var | Any] | None = None,
142
143
  on_blur: EventType[()] | None = None,
143
- on_click: EventType[()] | None = None,
144
- on_context_menu: EventType[()] | None = None,
145
- on_double_click: EventType[()] | None = None,
144
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
145
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
146
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
146
147
  on_focus: EventType[()] | None = None,
147
148
  on_mount: EventType[()] | None = None,
148
149
  on_mouse_down: EventType[()] | None = None,
@@ -153,6 +154,7 @@ class DynamicIcon(LucideIconComponent):
153
154
  on_mouse_over: EventType[()] | None = None,
154
155
  on_mouse_up: EventType[()] | None = None,
155
156
  on_scroll: EventType[()] | None = None,
157
+ on_scroll_end: EventType[()] | None = None,
156
158
  on_unmount: EventType[()] | None = None,
157
159
  **props,
158
160
  ) -> DynamicIcon:
@@ -9,7 +9,7 @@ from functools import lru_cache
9
9
  from hashlib import md5
10
10
  from typing import Any
11
11
 
12
- from reflex.components.component import BaseComponent, Component, CustomComponent
12
+ from reflex.components.component import BaseComponent, Component, CustomComponent, field
13
13
  from reflex.components.tags.tag import Tag
14
14
  from reflex.utils.imports import ImportDict, ImportVar
15
15
  from reflex.vars.base import LiteralVar, Var, VarData
@@ -150,10 +150,12 @@ class Markdown(Component):
150
150
  is_default = True
151
151
 
152
152
  # The component map from a tag to a lambda that creates a component.
153
- component_map: dict[str, Any] = {}
153
+ component_map: dict[str, Any] = field(
154
+ default_factory=dict, is_javascript_property=False
155
+ )
154
156
 
155
157
  # The hash of the component map, generated at create() time.
156
- component_map_hash: str = ""
158
+ component_map_hash: str = field(default="", is_javascript_property=False)
157
159
 
158
160
  @classmethod
159
161
  def create(cls, *children, **props) -> Component:
@@ -6,11 +6,11 @@
6
6
  import dataclasses
7
7
  from collections.abc import Callable, Mapping, Sequence
8
8
  from functools import lru_cache
9
- from typing import Any, overload
9
+ from typing import Any
10
10
 
11
11
  from reflex.components.component import Component
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.vars.base import LiteralVar, Var, VarData
16
16
 
@@ -48,9 +48,8 @@ class MarkdownComponentMap:
48
48
  def get_fn_body(cls) -> Var: ...
49
49
 
50
50
  class Markdown(Component):
51
- @overload
52
51
  @classmethod
53
- def create( # type: ignore
52
+ def create(
54
53
  cls,
55
54
  *children,
56
55
  component_map: dict[str, Any] | None = None,
@@ -67,9 +66,9 @@ class Markdown(Component):
67
66
  autofocus: bool | None = None,
68
67
  custom_attrs: dict[str, Var | Any] | None = None,
69
68
  on_blur: EventType[()] | None = None,
70
- on_click: EventType[()] | None = None,
71
- on_context_menu: EventType[()] | None = None,
72
- on_double_click: EventType[()] | None = None,
69
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
70
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
71
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
73
72
  on_focus: EventType[()] | None = None,
74
73
  on_mount: EventType[()] | None = None,
75
74
  on_mouse_down: EventType[()] | None = None,
@@ -80,6 +79,7 @@ class Markdown(Component):
80
79
  on_mouse_over: EventType[()] | None = None,
81
80
  on_mouse_up: EventType[()] | None = None,
82
81
  on_scroll: EventType[()] | None = None,
82
+ on_scroll_end: EventType[()] | None = None,
83
83
  on_unmount: EventType[()] | None = None,
84
84
  **props,
85
85
  ) -> Markdown:
@@ -30,7 +30,7 @@ class Moment(NoSSRComponent):
30
30
  tag: str | None = "Moment"
31
31
  is_default = True
32
32
  library: str | None = "react-moment@1.1.3"
33
- lib_dependencies: list[str] = ["moment"]
33
+ lib_dependencies: list[str] = ["moment@2.30.1"]
34
34
 
35
35
  # How often the date update (how often time update / 0 to disable).
36
36
  interval: Var[int]
@@ -6,11 +6,11 @@
6
6
  import dataclasses
7
7
  from collections.abc import Mapping, Sequence
8
8
  from datetime import date, datetime, time, timedelta
9
- from typing import Any, overload
9
+ from typing import Any
10
10
 
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.vars.base import Var
16
16
 
@@ -28,9 +28,8 @@ class MomentDelta:
28
28
 
29
29
  class Moment(NoSSRComponent):
30
30
  def add_imports(self) -> ImportDict: ...
31
- @overload
32
31
  @classmethod
33
- def create( # type: ignore
32
+ def create(
34
33
  cls,
35
34
  *children,
36
35
  interval: Var[int] | int | None = None,
@@ -73,9 +72,9 @@ class Moment(NoSSRComponent):
73
72
  custom_attrs: dict[str, Var | Any] | None = None,
74
73
  on_blur: EventType[()] | None = None,
75
74
  on_change: EventType[()] | EventType[str] | None = None,
76
- on_click: EventType[()] | None = None,
77
- on_context_menu: EventType[()] | None = None,
78
- on_double_click: EventType[()] | None = None,
75
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
76
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
77
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
79
78
  on_focus: EventType[()] | None = None,
80
79
  on_mount: EventType[()] | None = None,
81
80
  on_mouse_down: EventType[()] | None = None,
@@ -86,6 +85,7 @@ class Moment(NoSSRComponent):
86
85
  on_mouse_over: EventType[()] | None = None,
87
86
  on_mouse_up: EventType[()] | None = None,
88
87
  on_scroll: EventType[()] | None = None,
88
+ on_scroll_end: EventType[()] | None = None,
89
89
  on_unmount: EventType[()] | None = None,
90
90
  **props,
91
91
  ) -> Moment:
@@ -2,7 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Any, TypedDict, TypeVar
5
+ from typing import TYPE_CHECKING, Any, TypedDict, TypeVar
6
6
 
7
7
  from reflex.components.component import Component, NoSSRComponent
8
8
  from reflex.components.core.cond import color_mode_cond
@@ -17,8 +17,9 @@ try:
17
17
 
18
18
  except ImportError:
19
19
  console.warn("Plotly is not installed. Please run `pip install plotly`.")
20
- Figure = Any
21
- Template = Any
20
+ if not TYPE_CHECKING:
21
+ Figure = Any
22
+ Template = Any
22
23
 
23
24
 
24
25
  def _event_points_data_signature(e0: Var) -> tuple[Var[list[Point]]]:
@@ -78,13 +79,13 @@ class Plotly(NoSSRComponent):
78
79
  is_default = True
79
80
 
80
81
  # The figure to display. This can be a plotly figure or a plotly data json.
81
- data: Var[Figure] # pyright: ignore [reportInvalidTypeForm]
82
+ data: Var[Figure]
82
83
 
83
84
  # The layout of the graph.
84
85
  layout: Var[dict]
85
86
 
86
87
  # The template for visual appearance of the graph.
87
- template: Var[Template] # pyright: ignore [reportInvalidTypeForm]
88
+ template: Var[Template]
88
89
 
89
90
  # The config of the graph.
90
91
  config: Var[dict]
@@ -213,6 +214,7 @@ const extractPoints = (points) => {
213
214
  Returns:
214
215
  The Plotly component.
215
216
  """
217
+ from plotly.graph_objs.layout import Template
216
218
  from plotly.io import templates
217
219
 
218
220
  responsive_template = color_mode_cond(
@@ -277,8 +279,12 @@ def dynamic_plotly_import(name: str, package: str) -> str:
277
279
  Returns:
278
280
  The dynamic import for the plotly component.
279
281
  """
282
+ library_import = f"import('{package}')"
283
+ mod_import = ".then((mod) => ({ default: createPlotlyComponent(mod) }))"
280
284
  return f"""
281
- const {name} = dynamic(() => import('{package}').then(mod => createPlotlyComponent(mod)), {{ssr: false}})
285
+ const {name} = ClientSide(lazy(() =>
286
+ {library_import}{mod_import}
287
+ ))
282
288
  """
283
289
 
284
290