reflex 0.6.4a3__py3-none-any.whl → 0.6.5a1__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.
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 +82 -28
  34. reflex/components/core/upload.pyi +77 -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 +27 -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 +127 -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.5a1.dist-info}/METADATA +3 -3
  224. reflex-0.6.5a1.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.5a1.dist-info}/LICENSE +0 -0
  227. {reflex-0.6.4a3.dist-info → reflex-0.6.5a1.dist-info}/WHEEL +0 -0
  228. {reflex-0.6.4a3.dist-info → reflex-0.6.5a1.dist-info}/entry_points.txt +0 -0
@@ -7,7 +7,9 @@ from typing import Any, Dict, Literal, Optional, Union, overload
7
7
 
8
8
  from reflex.base import Base
9
9
  from reflex.components.component import Component, ComponentNamespace
10
- from reflex.event import EventType
10
+ from reflex.components.markdown.markdown import MarkdownComponentMap
11
+ from reflex.components.props import NoExtrasAllowedProps
12
+ from reflex.event import BASE_STATE, EventType
11
13
  from reflex.style import Style
12
14
  from reflex.vars.base import Var
13
15
  from reflex.vars.function import FunctionStringVar
@@ -192,6 +194,7 @@ LiteralCodeLanguage = Literal[
192
194
  "pascal",
193
195
  "perl",
194
196
  "php",
197
+ "plain",
195
198
  "plsql",
196
199
  "po",
197
200
  "postcss",
@@ -308,7 +311,6 @@ LiteralCodeTheme = Literal[
308
311
  "nord",
309
312
  "one-dark-pro",
310
313
  "one-light",
311
- "plain",
312
314
  "plastic",
313
315
  "poimandres",
314
316
  "red",
@@ -328,6 +330,17 @@ LiteralCodeTheme = Literal[
328
330
  "vitesse-light",
329
331
  ]
330
332
 
333
+ class Position(NoExtrasAllowedProps):
334
+ line: int
335
+ character: int
336
+
337
+ class ShikiDecorations(NoExtrasAllowedProps):
338
+ start: Union[int, Position]
339
+ end: Union[int, Position]
340
+ tag_name: str
341
+ properties: dict[str, Any]
342
+ always_wrap: bool
343
+
331
344
  class ShikiBaseTransformers(Base):
332
345
  library: str
333
346
  fns: list[FunctionStringVar]
@@ -338,7 +351,7 @@ class ShikiJsTransformer(ShikiBaseTransformers):
338
351
  fns: list[FunctionStringVar]
339
352
  style: Optional[Style]
340
353
 
341
- class ShikiCodeBlock(Component):
354
+ class ShikiCodeBlock(Component, MarkdownComponentMap):
342
355
  @overload
343
356
  @classmethod
344
357
  def create( # type: ignore
@@ -479,6 +492,7 @@ class ShikiCodeBlock(Component):
479
492
  "pascal",
480
493
  "perl",
481
494
  "php",
495
+ "plain",
482
496
  "plsql",
483
497
  "po",
484
498
  "postcss",
@@ -694,6 +708,7 @@ class ShikiCodeBlock(Component):
694
708
  "pascal",
695
709
  "perl",
696
710
  "php",
711
+ "plain",
697
712
  "plsql",
698
713
  "po",
699
714
  "postcss",
@@ -815,7 +830,6 @@ class ShikiCodeBlock(Component):
815
830
  "nord",
816
831
  "one-dark-pro",
817
832
  "one-light",
818
- "plain",
819
833
  "plastic",
820
834
  "poimandres",
821
835
  "red",
@@ -870,7 +884,6 @@ class ShikiCodeBlock(Component):
870
884
  "nord",
871
885
  "one-dark-pro",
872
886
  "one-light",
873
- "plain",
874
887
  "plastic",
875
888
  "poimandres",
876
889
  "red",
@@ -906,27 +919,30 @@ class ShikiCodeBlock(Component):
906
919
  list[Union[ShikiBaseTransformers, dict[str, Any]]],
907
920
  ]
908
921
  ] = None,
922
+ decorations: Optional[
923
+ Union[Var[list[ShikiDecorations]], list[ShikiDecorations]]
924
+ ] = None,
909
925
  style: Optional[Style] = None,
910
926
  key: Optional[Any] = None,
911
927
  id: Optional[Any] = None,
912
928
  class_name: Optional[Any] = None,
913
929
  autofocus: Optional[bool] = None,
914
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
915
- on_blur: Optional[EventType[[]]] = None,
916
- on_click: Optional[EventType[[]]] = None,
917
- on_context_menu: Optional[EventType[[]]] = None,
918
- on_double_click: Optional[EventType[[]]] = None,
919
- on_focus: Optional[EventType[[]]] = None,
920
- on_mount: Optional[EventType[[]]] = None,
921
- on_mouse_down: Optional[EventType[[]]] = None,
922
- on_mouse_enter: Optional[EventType[[]]] = None,
923
- on_mouse_leave: Optional[EventType[[]]] = None,
924
- on_mouse_move: Optional[EventType[[]]] = None,
925
- on_mouse_out: Optional[EventType[[]]] = None,
926
- on_mouse_over: Optional[EventType[[]]] = None,
927
- on_mouse_up: Optional[EventType[[]]] = None,
928
- on_scroll: Optional[EventType[[]]] = None,
929
- on_unmount: Optional[EventType[[]]] = None,
930
+ custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
931
+ on_blur: Optional[EventType[[], BASE_STATE]] = None,
932
+ on_click: Optional[EventType[[], BASE_STATE]] = None,
933
+ on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
934
+ on_double_click: Optional[EventType[[], BASE_STATE]] = None,
935
+ on_focus: Optional[EventType[[], BASE_STATE]] = None,
936
+ on_mount: Optional[EventType[[], BASE_STATE]] = None,
937
+ on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
938
+ on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
939
+ on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
940
+ on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
941
+ on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
942
+ on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
943
+ on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
944
+ on_scroll: Optional[EventType[[], BASE_STATE]] = None,
945
+ on_unmount: Optional[EventType[[], BASE_STATE]] = None,
930
946
  **props,
931
947
  ) -> "ShikiCodeBlock":
932
948
  """Create a code block component using [shiki syntax highlighter](https://shiki.matsu.io/).
@@ -938,6 +954,7 @@ class ShikiCodeBlock(Component):
938
954
  themes: The set of themes to use for different modes.
939
955
  code: The code to display.
940
956
  transformers: The transformers to use for the syntax highlighter.
957
+ decorations: The decorations to use for the syntax highlighter.
941
958
  style: The style of the component.
942
959
  key: A unique key for the component.
943
960
  id: The id for the component.
@@ -965,10 +982,8 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
965
982
  *children,
966
983
  use_transformers: Optional[Union[Var[bool], bool]] = None,
967
984
  show_line_numbers: Optional[Union[Var[bool], bool]] = None,
968
- can_copy: Optional[Union[Var[bool], bool]] = None,
969
- copy_button: Optional[
970
- Union[Component, Var[Optional[Union[Component, bool]]], bool]
971
- ] = None,
985
+ can_copy: Optional[bool] = None,
986
+ copy_button: Optional[Union[Component, bool]] = None,
972
987
  language: Optional[
973
988
  Union[
974
989
  Literal[
@@ -1104,6 +1119,7 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
1104
1119
  "pascal",
1105
1120
  "perl",
1106
1121
  "php",
1122
+ "plain",
1107
1123
  "plsql",
1108
1124
  "po",
1109
1125
  "postcss",
@@ -1319,6 +1335,7 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
1319
1335
  "pascal",
1320
1336
  "perl",
1321
1337
  "php",
1338
+ "plain",
1322
1339
  "plsql",
1323
1340
  "po",
1324
1341
  "postcss",
@@ -1440,7 +1457,6 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
1440
1457
  "nord",
1441
1458
  "one-dark-pro",
1442
1459
  "one-light",
1443
- "plain",
1444
1460
  "plastic",
1445
1461
  "poimandres",
1446
1462
  "red",
@@ -1495,7 +1511,6 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
1495
1511
  "nord",
1496
1512
  "one-dark-pro",
1497
1513
  "one-light",
1498
- "plain",
1499
1514
  "plastic",
1500
1515
  "poimandres",
1501
1516
  "red",
@@ -1531,27 +1546,30 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
1531
1546
  list[Union[ShikiBaseTransformers, dict[str, Any]]],
1532
1547
  ]
1533
1548
  ] = None,
1549
+ decorations: Optional[
1550
+ Union[Var[list[ShikiDecorations]], list[ShikiDecorations]]
1551
+ ] = None,
1534
1552
  style: Optional[Style] = None,
1535
1553
  key: Optional[Any] = None,
1536
1554
  id: Optional[Any] = None,
1537
1555
  class_name: Optional[Any] = None,
1538
1556
  autofocus: Optional[bool] = None,
1539
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
1540
- on_blur: Optional[EventType[[]]] = None,
1541
- on_click: Optional[EventType[[]]] = None,
1542
- on_context_menu: Optional[EventType[[]]] = None,
1543
- on_double_click: Optional[EventType[[]]] = None,
1544
- on_focus: Optional[EventType[[]]] = None,
1545
- on_mount: Optional[EventType[[]]] = None,
1546
- on_mouse_down: Optional[EventType[[]]] = None,
1547
- on_mouse_enter: Optional[EventType[[]]] = None,
1548
- on_mouse_leave: Optional[EventType[[]]] = None,
1549
- on_mouse_move: Optional[EventType[[]]] = None,
1550
- on_mouse_out: Optional[EventType[[]]] = None,
1551
- on_mouse_over: Optional[EventType[[]]] = None,
1552
- on_mouse_up: Optional[EventType[[]]] = None,
1553
- on_scroll: Optional[EventType[[]]] = None,
1554
- on_unmount: Optional[EventType[[]]] = None,
1557
+ custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
1558
+ on_blur: Optional[EventType[[], BASE_STATE]] = None,
1559
+ on_click: Optional[EventType[[], BASE_STATE]] = None,
1560
+ on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
1561
+ on_double_click: Optional[EventType[[], BASE_STATE]] = None,
1562
+ on_focus: Optional[EventType[[], BASE_STATE]] = None,
1563
+ on_mount: Optional[EventType[[], BASE_STATE]] = None,
1564
+ on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
1565
+ on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
1566
+ on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
1567
+ on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
1568
+ on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
1569
+ on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
1570
+ on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
1571
+ on_scroll: Optional[EventType[[], BASE_STATE]] = None,
1572
+ on_unmount: Optional[EventType[[], BASE_STATE]] = None,
1555
1573
  **props,
1556
1574
  ) -> "ShikiHighLevelCodeBlock":
1557
1575
  """Create a code block component using [shiki syntax highlighter](https://shiki.matsu.io/).
@@ -1567,6 +1585,7 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
1567
1585
  themes: The set of themes to use for different modes.
1568
1586
  code: The code to display.
1569
1587
  transformers: The transformers to use for the syntax highlighter.
1588
+ decorations: The decorations to use for the syntax highlighter.
1570
1589
  style: The style of the component.
1571
1590
  key: A unique key for the component.
1572
1591
  id: The id for the component.
@@ -1593,10 +1612,8 @@ class CodeblockNamespace(ComponentNamespace):
1593
1612
  *children,
1594
1613
  use_transformers: Optional[Union[Var[bool], bool]] = None,
1595
1614
  show_line_numbers: Optional[Union[Var[bool], bool]] = None,
1596
- can_copy: Optional[Union[Var[bool], bool]] = None,
1597
- copy_button: Optional[
1598
- Union[Component, Var[Optional[Union[Component, bool]]], bool]
1599
- ] = None,
1615
+ can_copy: Optional[bool] = None,
1616
+ copy_button: Optional[Union[Component, bool]] = None,
1600
1617
  language: Optional[
1601
1618
  Union[
1602
1619
  Literal[
@@ -1732,6 +1749,7 @@ class CodeblockNamespace(ComponentNamespace):
1732
1749
  "pascal",
1733
1750
  "perl",
1734
1751
  "php",
1752
+ "plain",
1735
1753
  "plsql",
1736
1754
  "po",
1737
1755
  "postcss",
@@ -1947,6 +1965,7 @@ class CodeblockNamespace(ComponentNamespace):
1947
1965
  "pascal",
1948
1966
  "perl",
1949
1967
  "php",
1968
+ "plain",
1950
1969
  "plsql",
1951
1970
  "po",
1952
1971
  "postcss",
@@ -2068,7 +2087,6 @@ class CodeblockNamespace(ComponentNamespace):
2068
2087
  "nord",
2069
2088
  "one-dark-pro",
2070
2089
  "one-light",
2071
- "plain",
2072
2090
  "plastic",
2073
2091
  "poimandres",
2074
2092
  "red",
@@ -2123,7 +2141,6 @@ class CodeblockNamespace(ComponentNamespace):
2123
2141
  "nord",
2124
2142
  "one-dark-pro",
2125
2143
  "one-light",
2126
- "plain",
2127
2144
  "plastic",
2128
2145
  "poimandres",
2129
2146
  "red",
@@ -2159,27 +2176,30 @@ class CodeblockNamespace(ComponentNamespace):
2159
2176
  list[Union[ShikiBaseTransformers, dict[str, Any]]],
2160
2177
  ]
2161
2178
  ] = None,
2179
+ decorations: Optional[
2180
+ Union[Var[list[ShikiDecorations]], list[ShikiDecorations]]
2181
+ ] = None,
2162
2182
  style: Optional[Style] = None,
2163
2183
  key: Optional[Any] = None,
2164
2184
  id: Optional[Any] = None,
2165
2185
  class_name: Optional[Any] = None,
2166
2186
  autofocus: Optional[bool] = None,
2167
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
2168
- on_blur: Optional[EventType[[]]] = None,
2169
- on_click: Optional[EventType[[]]] = None,
2170
- on_context_menu: Optional[EventType[[]]] = None,
2171
- on_double_click: Optional[EventType[[]]] = None,
2172
- on_focus: Optional[EventType[[]]] = None,
2173
- on_mount: Optional[EventType[[]]] = None,
2174
- on_mouse_down: Optional[EventType[[]]] = None,
2175
- on_mouse_enter: Optional[EventType[[]]] = None,
2176
- on_mouse_leave: Optional[EventType[[]]] = None,
2177
- on_mouse_move: Optional[EventType[[]]] = None,
2178
- on_mouse_out: Optional[EventType[[]]] = None,
2179
- on_mouse_over: Optional[EventType[[]]] = None,
2180
- on_mouse_up: Optional[EventType[[]]] = None,
2181
- on_scroll: Optional[EventType[[]]] = None,
2182
- on_unmount: Optional[EventType[[]]] = None,
2187
+ custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
2188
+ on_blur: Optional[EventType[[], BASE_STATE]] = None,
2189
+ on_click: Optional[EventType[[], BASE_STATE]] = None,
2190
+ on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
2191
+ on_double_click: Optional[EventType[[], BASE_STATE]] = None,
2192
+ on_focus: Optional[EventType[[], BASE_STATE]] = None,
2193
+ on_mount: Optional[EventType[[], BASE_STATE]] = None,
2194
+ on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
2195
+ on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
2196
+ on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
2197
+ on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
2198
+ on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
2199
+ on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
2200
+ on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
2201
+ on_scroll: Optional[EventType[[], BASE_STATE]] = None,
2202
+ on_unmount: Optional[EventType[[], BASE_STATE]] = None,
2183
2203
  **props,
2184
2204
  ) -> "ShikiHighLevelCodeBlock":
2185
2205
  """Create a code block component using [shiki syntax highlighter](https://shiki.matsu.io/).
@@ -2195,6 +2215,7 @@ class CodeblockNamespace(ComponentNamespace):
2195
2215
  themes: The set of themes to use for different modes.
2196
2216
  code: The code to display.
2197
2217
  transformers: The transformers to use for the syntax highlighter.
2218
+ decorations: The decorations to use for the syntax highlighter.
2198
2219
  style: The style of the component.
2199
2220
  key: A unique key for the component.
2200
2221
  id: The id for the component.
@@ -63,6 +63,9 @@ def load_dynamic_serializer():
63
63
  """
64
64
  # Causes a circular import, so we import here.
65
65
  from reflex.compiler import templates, utils
66
+ from reflex.components.base.bare import Bare
67
+
68
+ component = Bare.create(Var.create(component))
66
69
 
67
70
  rendered_components = {}
68
71
  # Include dynamic imports in the shared component.
@@ -108,9 +111,9 @@ def load_dynamic_serializer():
108
111
  if line.startswith("import "):
109
112
  if 'from "$/' in line or 'from "/' in line:
110
113
  module_code_lines[ix] = (
111
- line.replace("import ", "const ", 1).replace(
112
- " from ", " = window['__reflex'][", 1
113
- )
114
+ line.replace("import ", "const ", 1)
115
+ .replace(" as ", ": ")
116
+ .replace(" from ", " = window['__reflex'][", 1)
114
117
  + "]"
115
118
  )
116
119
  else:
@@ -127,14 +130,15 @@ def load_dynamic_serializer():
127
130
  module_code_lines[ix] = line.replace(
128
131
  "export function", "export default function", 1
129
132
  )
133
+ line_stripped = line.strip()
134
+ if line_stripped.startswith("{") and line_stripped.endswith("}"):
135
+ module_code_lines[ix] = line_stripped[1:-1]
130
136
 
131
137
  module_code_lines.insert(0, "const React = window.__reflex.react;")
132
138
 
133
139
  return "\n".join(
134
140
  [
135
141
  "//__reflex_evaluate",
136
- "/** @jsx jsx */",
137
- "const { jsx } = window.__reflex['@emotion/react']",
138
142
  *module_code_lines,
139
143
  ]
140
144
  )
@@ -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
 
@@ -21,22 +21,22 @@ class Element(Component):
21
21
  id: Optional[Any] = None,
22
22
  class_name: Optional[Any] = None,
23
23
  autofocus: Optional[bool] = None,
24
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
25
- on_blur: Optional[EventType[[]]] = None,
26
- on_click: Optional[EventType[[]]] = None,
27
- on_context_menu: Optional[EventType[[]]] = None,
28
- on_double_click: Optional[EventType[[]]] = None,
29
- on_focus: Optional[EventType[[]]] = None,
30
- on_mount: Optional[EventType[[]]] = None,
31
- on_mouse_down: Optional[EventType[[]]] = None,
32
- on_mouse_enter: Optional[EventType[[]]] = None,
33
- on_mouse_leave: Optional[EventType[[]]] = None,
34
- on_mouse_move: Optional[EventType[[]]] = None,
35
- on_mouse_out: Optional[EventType[[]]] = None,
36
- on_mouse_over: Optional[EventType[[]]] = None,
37
- on_mouse_up: Optional[EventType[[]]] = None,
38
- on_scroll: Optional[EventType[[]]] = None,
39
- on_unmount: Optional[EventType[[]]] = None,
24
+ custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
25
+ on_blur: Optional[EventType[[], BASE_STATE]] = None,
26
+ on_click: Optional[EventType[[], BASE_STATE]] = None,
27
+ on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
28
+ on_double_click: Optional[EventType[[], BASE_STATE]] = None,
29
+ on_focus: Optional[EventType[[], BASE_STATE]] = None,
30
+ on_mount: Optional[EventType[[], BASE_STATE]] = None,
31
+ on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
32
+ on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
33
+ on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
34
+ on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
35
+ on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
36
+ on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
37
+ on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
38
+ on_scroll: Optional[EventType[[], BASE_STATE]] = None,
39
+ on_unmount: Optional[EventType[[], BASE_STATE]] = None,
40
40
  **props,
41
41
  ) -> "Element":
42
42
  """Create the component.
@@ -6,7 +6,7 @@
6
6
  from typing import Any, Dict, Optional, Union, overload
7
7
 
8
8
  from reflex.components.el.element import Element
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
 
@@ -45,22 +45,22 @@ class BaseHTML(Element):
45
45
  id: Optional[Any] = None,
46
46
  class_name: Optional[Any] = None,
47
47
  autofocus: Optional[bool] = None,
48
- custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
49
- on_blur: Optional[EventType[[]]] = None,
50
- on_click: Optional[EventType[[]]] = None,
51
- on_context_menu: Optional[EventType[[]]] = None,
52
- on_double_click: Optional[EventType[[]]] = None,
53
- on_focus: Optional[EventType[[]]] = None,
54
- on_mount: Optional[EventType[[]]] = None,
55
- on_mouse_down: Optional[EventType[[]]] = None,
56
- on_mouse_enter: Optional[EventType[[]]] = None,
57
- on_mouse_leave: Optional[EventType[[]]] = None,
58
- on_mouse_move: Optional[EventType[[]]] = None,
59
- on_mouse_out: Optional[EventType[[]]] = None,
60
- on_mouse_over: Optional[EventType[[]]] = None,
61
- on_mouse_up: Optional[EventType[[]]] = None,
62
- on_scroll: Optional[EventType[[]]] = None,
63
- on_unmount: Optional[EventType[[]]] = None,
48
+ custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
49
+ on_blur: Optional[EventType[[], BASE_STATE]] = None,
50
+ on_click: Optional[EventType[[], BASE_STATE]] = None,
51
+ on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
52
+ on_double_click: Optional[EventType[[], BASE_STATE]] = None,
53
+ on_focus: Optional[EventType[[], BASE_STATE]] = None,
54
+ on_mount: Optional[EventType[[], BASE_STATE]] = None,
55
+ on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
56
+ on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
57
+ on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
58
+ on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
59
+ on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
60
+ on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
61
+ on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
62
+ on_scroll: Optional[EventType[[], BASE_STATE]] = None,
63
+ on_unmount: Optional[EventType[[], BASE_STATE]] = None,
64
64
  **props,
65
65
  ) -> "BaseHTML":
66
66
  """Create the component.
@@ -111,6 +111,15 @@ def on_submit_event_spec() -> Tuple[Var[Dict[str, Any]]]:
111
111
  return (FORM_DATA,)
112
112
 
113
113
 
114
+ def on_submit_string_event_spec() -> Tuple[Var[Dict[str, str]]]:
115
+ """Event handler spec for the on_submit event.
116
+
117
+ Returns:
118
+ The event handler spec.
119
+ """
120
+ return (FORM_DATA,)
121
+
122
+
114
123
  class Form(BaseHTML):
115
124
  """Display the form element."""
116
125
 
@@ -150,7 +159,7 @@ class Form(BaseHTML):
150
159
  handle_submit_unique_name: Var[str]
151
160
 
152
161
  # Fired when the form is submitted
153
- on_submit: EventHandler[on_submit_event_spec]
162
+ on_submit: EventHandler[on_submit_event_spec, on_submit_string_event_spec]
154
163
 
155
164
  @classmethod
156
165
  def create(cls, *children, **props):
@@ -230,13 +239,13 @@ class Form(BaseHTML):
230
239
  # when ref start with refs_ it's an array of refs, so we need different method
231
240
  # to collect data
232
241
  if ref.startswith("refs_"):
233
- ref_var = Var(_js_expr=ref[:-3]).as_ref()
242
+ ref_var = Var(_js_expr=ref[:-3])._as_ref()
234
243
  form_refs[ref[len("refs_") : -3]] = Var(
235
244
  _js_expr=f"getRefValues({str(ref_var)})",
236
245
  _var_data=VarData.merge(ref_var._get_all_var_data()),
237
246
  )
238
247
  else:
239
- ref_var = Var(_js_expr=ref).as_ref()
248
+ ref_var = Var(_js_expr=ref)._as_ref()
240
249
  form_refs[ref[4:]] = Var(
241
250
  _js_expr=f"getRefValue({str(ref_var)})",
242
251
  _var_data=VarData.merge(ref_var._get_all_var_data()),