reflex 0.6.4a2__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.
- reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -14
- reflex/.templates/jinja/web/pages/utils.js.jinja2 +4 -8
- reflex/.templates/web/components/shiki/code.js +16 -11
- reflex/.templates/web/utils/state.js +29 -21
- reflex/__init__.py +4 -0
- reflex/__init__.pyi +4 -0
- reflex/app.py +148 -154
- reflex/app_mixins/lifespan.py +5 -1
- reflex/app_mixins/middleware.py +3 -1
- reflex/app_mixins/mixin.py +3 -2
- reflex/base.py +2 -4
- reflex/compiler/compiler.py +111 -37
- reflex/components/base/app_wrap.pyi +17 -17
- reflex/components/base/bare.py +72 -3
- reflex/components/base/body.pyi +17 -17
- reflex/components/base/document.pyi +81 -81
- reflex/components/base/error_boundary.pyi +25 -18
- reflex/components/base/fragment.pyi +17 -17
- reflex/components/base/head.pyi +33 -33
- reflex/components/base/link.pyi +33 -33
- reflex/components/base/meta.pyi +65 -65
- reflex/components/base/script.py +4 -4
- reflex/components/base/script.pyi +23 -20
- reflex/components/component.py +250 -31
- reflex/components/core/banner.py +1 -1
- reflex/components/core/banner.pyi +81 -81
- reflex/components/core/client_side_routing.pyi +33 -33
- reflex/components/core/clipboard.py +2 -2
- reflex/components/core/clipboard.pyi +24 -18
- reflex/components/core/debounce.py +2 -2
- reflex/components/core/debounce.pyi +18 -18
- reflex/components/core/html.pyi +17 -17
- reflex/components/core/upload.py +90 -28
- reflex/components/core/upload.pyi +128 -72
- reflex/components/datadisplay/code.py +55 -40
- reflex/components/datadisplay/code.pyi +46 -44
- reflex/components/datadisplay/dataeditor.py +21 -20
- reflex/components/datadisplay/dataeditor.pyi +103 -35
- reflex/components/datadisplay/shiki_code_block.py +60 -27
- reflex/components/datadisplay/shiki_code_block.pyi +86 -65
- reflex/components/dynamic.py +9 -5
- reflex/components/el/element.pyi +17 -17
- reflex/components/el/elements/base.pyi +17 -17
- reflex/components/el/elements/forms.py +12 -3
- reflex/components/el/elements/forms.pyi +293 -233
- reflex/components/el/elements/inline.pyi +449 -449
- reflex/components/el/elements/media.pyi +401 -401
- reflex/components/el/elements/metadata.pyi +97 -97
- reflex/components/el/elements/other.pyi +113 -113
- reflex/components/el/elements/scripts.pyi +49 -49
- reflex/components/el/elements/sectioning.pyi +241 -241
- reflex/components/el/elements/tables.pyi +161 -161
- reflex/components/el/elements/typography.pyi +241 -241
- reflex/components/gridjs/datatable.pyi +33 -33
- reflex/components/lucide/icon.py +1 -1
- reflex/components/lucide/icon.pyi +33 -33
- reflex/components/markdown/markdown.py +180 -49
- reflex/components/markdown/markdown.pyi +36 -19
- reflex/components/moment/moment.py +17 -21
- reflex/components/moment/moment.pyi +26 -21
- reflex/components/next/base.pyi +17 -17
- reflex/components/next/image.py +3 -3
- reflex/components/next/image.pyi +21 -19
- reflex/components/next/link.pyi +17 -17
- reflex/components/next/video.pyi +17 -17
- reflex/components/plotly/plotly.py +79 -78
- reflex/components/plotly/plotly.pyi +91 -41
- reflex/components/props.py +34 -0
- reflex/components/radix/primitives/accordion.py +15 -8
- reflex/components/radix/primitives/accordion.pyi +121 -118
- reflex/components/radix/primitives/base.pyi +33 -33
- reflex/components/radix/primitives/drawer.py +41 -20
- reflex/components/radix/primitives/drawer.pyi +279 -190
- reflex/components/radix/primitives/form.py +2 -2
- reflex/components/radix/primitives/form.pyi +200 -167
- reflex/components/radix/primitives/progress.pyi +81 -81
- reflex/components/radix/primitives/slider.pyi +89 -83
- reflex/components/radix/themes/base.py +30 -1
- reflex/components/radix/themes/base.pyi +286 -113
- reflex/components/radix/themes/color_mode.py +17 -9
- reflex/components/radix/themes/color_mode.pyi +68 -56
- reflex/components/radix/themes/components/alert_dialog.py +8 -5
- reflex/components/radix/themes/components/alert_dialog.pyi +125 -117
- reflex/components/radix/themes/components/aspect_ratio.pyi +17 -17
- reflex/components/radix/themes/components/avatar.py +1 -5
- reflex/components/radix/themes/components/avatar.pyi +17 -17
- reflex/components/radix/themes/components/badge.py +1 -5
- reflex/components/radix/themes/components/badge.pyi +17 -17
- reflex/components/radix/themes/components/button.pyi +18 -21
- reflex/components/radix/themes/components/callout.py +1 -4
- reflex/components/radix/themes/components/callout.pyi +81 -81
- reflex/components/radix/themes/components/card.py +1 -3
- reflex/components/radix/themes/components/card.pyi +17 -17
- reflex/components/radix/themes/components/checkbox.py +4 -8
- reflex/components/radix/themes/components/checkbox.pyi +61 -52
- reflex/components/radix/themes/components/checkbox_cards.pyi +33 -33
- reflex/components/radix/themes/components/checkbox_group.pyi +33 -33
- reflex/components/radix/themes/components/context_menu.py +121 -28
- reflex/components/radix/themes/components/context_menu.pyi +250 -147
- reflex/components/radix/themes/components/data_list.pyi +65 -65
- reflex/components/radix/themes/components/dialog.py +11 -11
- reflex/components/radix/themes/components/dialog.pyi +135 -120
- reflex/components/radix/themes/components/dropdown_menu.py +14 -25
- reflex/components/radix/themes/components/dropdown_menu.pyi +157 -145
- reflex/components/radix/themes/components/hover_card.py +19 -7
- reflex/components/radix/themes/components/hover_card.pyi +102 -67
- reflex/components/radix/themes/components/icon_button.pyi +18 -21
- reflex/components/radix/themes/components/inset.py +1 -3
- reflex/components/radix/themes/components/inset.pyi +17 -17
- reflex/components/radix/themes/components/popover.py +22 -13
- reflex/components/radix/themes/components/popover.pyi +98 -72
- reflex/components/radix/themes/components/progress.pyi +17 -17
- reflex/components/radix/themes/components/radio.pyi +17 -17
- reflex/components/radix/themes/components/radio_cards.py +2 -2
- reflex/components/radix/themes/components/radio_cards.pyi +37 -34
- reflex/components/radix/themes/components/radio_group.py +3 -7
- reflex/components/radix/themes/components/radio_group.pyi +69 -66
- reflex/components/radix/themes/components/scroll_area.py +1 -3
- reflex/components/radix/themes/components/scroll_area.pyi +17 -17
- reflex/components/radix/themes/components/segmented_control.pyi +37 -34
- reflex/components/radix/themes/components/select.py +7 -11
- reflex/components/radix/themes/components/select.pyi +175 -154
- reflex/components/radix/themes/components/separator.py +1 -4
- reflex/components/radix/themes/components/separator.pyi +17 -17
- reflex/components/radix/themes/components/skeleton.pyi +17 -17
- reflex/components/radix/themes/components/slider.py +12 -21
- reflex/components/radix/themes/components/slider.pyi +47 -25
- reflex/components/radix/themes/components/spinner.py +1 -4
- reflex/components/radix/themes/components/spinner.pyi +17 -17
- reflex/components/radix/themes/components/switch.py +3 -6
- reflex/components/radix/themes/components/switch.pyi +21 -18
- reflex/components/radix/themes/components/table.py +21 -5
- reflex/components/radix/themes/components/table.pyi +392 -116
- reflex/components/radix/themes/components/tabs.py +3 -6
- reflex/components/radix/themes/components/tabs.pyi +89 -83
- reflex/components/radix/themes/components/text_area.py +1 -5
- reflex/components/radix/themes/components/text_area.pyi +43 -20
- reflex/components/radix/themes/components/text_field.py +1 -5
- reflex/components/radix/themes/components/text_field.pyi +101 -55
- reflex/components/radix/themes/components/tooltip.py +5 -7
- reflex/components/radix/themes/components/tooltip.pyi +25 -22
- reflex/components/radix/themes/layout/base.py +2 -27
- reflex/components/radix/themes/layout/base.pyi +82 -82
- reflex/components/radix/themes/layout/box.pyi +17 -17
- reflex/components/radix/themes/layout/center.pyi +17 -17
- reflex/components/radix/themes/layout/container.pyi +17 -17
- reflex/components/radix/themes/layout/flex.py +1 -6
- reflex/components/radix/themes/layout/flex.pyi +17 -17
- reflex/components/radix/themes/layout/grid.py +1 -6
- reflex/components/radix/themes/layout/grid.pyi +17 -17
- reflex/components/radix/themes/layout/list.py +20 -15
- reflex/components/radix/themes/layout/list.pyi +175 -92
- reflex/components/radix/themes/layout/section.pyi +17 -17
- reflex/components/radix/themes/layout/spacer.pyi +17 -17
- reflex/components/radix/themes/layout/stack.py +6 -6
- reflex/components/radix/themes/layout/stack.pyi +91 -62
- reflex/components/radix/themes/typography/blockquote.py +2 -8
- reflex/components/radix/themes/typography/blockquote.pyi +17 -17
- reflex/components/radix/themes/typography/code.py +4 -10
- reflex/components/radix/themes/typography/code.pyi +19 -18
- reflex/components/radix/themes/typography/heading.py +4 -11
- reflex/components/radix/themes/typography/heading.pyi +19 -18
- reflex/components/radix/themes/typography/link.py +4 -10
- reflex/components/radix/themes/typography/link.pyi +19 -18
- reflex/components/radix/themes/typography/text.py +4 -11
- reflex/components/radix/themes/typography/text.pyi +115 -114
- reflex/components/react_player/audio.pyi +58 -33
- reflex/components/react_player/react_player.py +17 -17
- reflex/components/react_player/react_player.pyi +55 -33
- reflex/components/react_player/video.pyi +58 -33
- reflex/components/recharts/cartesian.py +45 -45
- reflex/components/recharts/cartesian.pyi +389 -304
- reflex/components/recharts/charts.py +22 -22
- reflex/components/recharts/charts.pyi +226 -179
- reflex/components/recharts/general.py +26 -27
- reflex/components/recharts/general.pyi +106 -99
- reflex/components/recharts/polar.py +33 -33
- reflex/components/recharts/polar.pyi +70 -64
- reflex/components/recharts/recharts.pyi +33 -33
- reflex/components/sonner/toast.py +9 -36
- reflex/components/sonner/toast.pyi +20 -24
- reflex/components/suneditor/editor.py +8 -8
- reflex/components/suneditor/editor.pyi +50 -25
- reflex/components/tags/iter_tag.py +1 -10
- reflex/components/tags/tag.py +1 -4
- reflex/config.py +252 -41
- reflex/constants/__init__.py +4 -16
- reflex/constants/base.py +7 -14
- reflex/constants/colors.py +0 -1
- reflex/constants/installer.py +12 -7
- reflex/constants/state.py +4 -0
- reflex/custom_components/custom_components.py +6 -6
- reflex/event.py +486 -241
- reflex/experimental/client_state.py +9 -9
- reflex/experimental/layout.py +2 -2
- reflex/experimental/layout.pyi +95 -87
- reflex/experimental/misc.py +1 -1
- reflex/istate/__init__.py +1 -0
- reflex/istate/proxy.py +33 -0
- reflex/istate/wrappers.py +27 -0
- reflex/model.py +7 -7
- reflex/page.py +2 -1
- reflex/reflex.py +142 -8
- reflex/state.py +133 -46
- reflex/testing.py +9 -7
- reflex/utils/console.py +0 -1
- reflex/utils/exceptions.py +31 -3
- reflex/utils/exec.py +33 -14
- reflex/utils/format.py +15 -12
- reflex/utils/net.py +1 -1
- reflex/utils/path_ops.py +2 -2
- reflex/utils/prerequisites.py +82 -46
- reflex/utils/pyi_generator.py +63 -20
- reflex/utils/registry.py +1 -1
- reflex/utils/serializers.py +75 -36
- reflex/utils/telemetry.py +3 -2
- reflex/utils/types.py +125 -10
- reflex/vars/base.py +131 -119
- reflex/vars/function.py +59 -12
- reflex/vars/number.py +3 -1
- reflex/vars/object.py +30 -24
- reflex/vars/sequence.py +7 -7
- {reflex-0.6.4a2.dist-info → reflex-0.6.5.dist-info}/METADATA +3 -3
- reflex-0.6.5.dist-info/RECORD +394 -0
- reflex-0.6.4a2.dist-info/RECORD +0 -391
- {reflex-0.6.4a2.dist-info → reflex-0.6.5.dist-info}/LICENSE +0 -0
- {reflex-0.6.4a2.dist-info → reflex-0.6.5.dist-info}/WHEEL +0 -0
- {reflex-0.6.4a2.dist-info → reflex-0.6.5.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.
|
|
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,
|
|
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[
|
|
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,
|
|
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[
|
|
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,
|
|
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.
|
reflex/components/dynamic.py
CHANGED
|
@@ -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)
|
|
112
|
-
|
|
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
|
)
|
reflex/components/el/element.pyi
CHANGED
|
@@ -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,
|
|
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,
|
|
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]).
|
|
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).
|
|
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()),
|