reflex 0.5.10a3__py3-none-any.whl → 0.6.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.
- reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +2 -2
- reflex/.templates/jinja/web/pages/_app.js.jinja2 +1 -1
- reflex/.templates/jinja/web/pages/utils.js.jinja2 +4 -4
- reflex/.templates/jinja/web/utils/context.js.jinja2 +1 -1
- reflex/.templates/jinja/web/utils/theme.js.jinja2 +1 -1
- reflex/.templates/web/utils/state.js +3 -1
- reflex/__init__.py +10 -3
- reflex/__init__.pyi +3 -2
- reflex/app.py +47 -11
- reflex/app_module_for_backend.py +1 -1
- reflex/base.py +3 -2
- reflex/compiler/compiler.py +5 -5
- reflex/compiler/utils.py +5 -3
- reflex/components/base/app_wrap.py +2 -4
- reflex/components/base/app_wrap.pyi +16 -26
- reflex/components/base/bare.py +6 -4
- reflex/components/base/body.pyi +16 -26
- reflex/components/base/document.pyi +76 -126
- reflex/components/base/error_boundary.py +9 -8
- reflex/components/base/error_boundary.pyi +18 -30
- reflex/components/base/fragment.pyi +16 -26
- reflex/components/base/head.pyi +31 -51
- reflex/components/base/link.py +1 -1
- reflex/components/base/link.pyi +31 -51
- reflex/components/base/meta.pyi +61 -101
- reflex/components/base/script.py +2 -2
- reflex/components/base/script.pyi +20 -36
- reflex/components/component.py +107 -130
- reflex/components/core/banner.py +61 -66
- reflex/components/core/banner.pyi +129 -230
- reflex/components/core/client_side_routing.py +2 -2
- reflex/components/core/client_side_routing.pyi +31 -51
- reflex/components/core/clipboard.py +4 -3
- reflex/components/core/clipboard.pyi +19 -31
- reflex/components/core/cond.py +21 -44
- reflex/components/core/debounce.py +7 -9
- reflex/components/core/debounce.pyi +19 -31
- reflex/components/core/foreach.py +4 -14
- reflex/components/core/html.py +1 -1
- reflex/components/core/html.pyi +34 -44
- reflex/components/core/match.py +36 -43
- reflex/components/core/upload.py +27 -26
- reflex/components/core/upload.pyi +81 -116
- reflex/components/datadisplay/code.py +55 -29
- reflex/components/datadisplay/code.pyi +303 -410
- reflex/components/datadisplay/dataeditor.py +13 -9
- reflex/components/datadisplay/dataeditor.pyi +39 -51
- reflex/components/el/__init__.py +0 -1
- reflex/components/el/__init__.pyi +0 -11
- reflex/components/el/element.pyi +16 -26
- reflex/components/el/elements/__init__.py +1 -7
- reflex/components/el/elements/__init__.pyi +1 -15
- reflex/components/el/elements/base.py +1 -1
- reflex/components/el/elements/base.pyi +33 -43
- reflex/components/el/elements/forms.py +26 -33
- reflex/components/el/elements/forms.pyi +542 -694
- reflex/components/el/elements/inline.py +1 -1
- reflex/components/el/elements/inline.pyi +909 -1189
- reflex/components/el/elements/media.py +1 -22
- reflex/components/el/elements/media.pyi +765 -975
- reflex/components/el/elements/metadata.py +3 -5
- reflex/components/el/elements/metadata.pyi +175 -235
- reflex/components/el/elements/other.py +1 -1
- reflex/components/el/elements/other.pyi +228 -298
- reflex/components/el/elements/scripts.py +1 -1
- reflex/components/el/elements/scripts.pyi +106 -136
- reflex/components/el/elements/sectioning.py +0 -2
- reflex/components/el/elements/sectioning.pyi +481 -631
- reflex/components/el/elements/tables.py +1 -1
- reflex/components/el/elements/tables.pyi +341 -441
- reflex/components/el/elements/typography.py +1 -1
- reflex/components/el/elements/typography.pyi +491 -641
- reflex/components/gridjs/datatable.py +9 -13
- reflex/components/gridjs/datatable.pyi +33 -53
- reflex/components/lucide/icon.py +3 -127
- reflex/components/lucide/icon.pyi +31 -160
- reflex/components/markdown/markdown.py +32 -42
- reflex/components/markdown/markdown.pyi +28 -41
- reflex/components/moment/moment.py +13 -12
- reflex/components/moment/moment.pyi +22 -33
- reflex/components/next/base.pyi +16 -26
- reflex/components/next/image.py +1 -5
- reflex/components/next/image.pyi +21 -35
- reflex/components/next/link.py +1 -1
- reflex/components/next/link.pyi +16 -26
- reflex/components/next/video.py +1 -1
- reflex/components/next/video.pyi +16 -26
- reflex/components/plotly/plotly.py +17 -30
- reflex/components/plotly/plotly.pyi +38 -52
- reflex/components/props.py +21 -10
- reflex/components/radix/__init__.pyi +2 -1
- reflex/components/radix/primitives/accordion.py +6 -7
- reflex/components/radix/primitives/accordion.pyi +415 -485
- reflex/components/radix/primitives/base.py +1 -1
- reflex/components/radix/primitives/base.pyi +31 -51
- reflex/components/radix/primitives/drawer.py +1 -1
- reflex/components/radix/primitives/drawer.pyi +162 -262
- reflex/components/radix/primitives/form.py +1 -1
- reflex/components/radix/primitives/form.pyi +247 -353
- reflex/components/radix/primitives/progress.py +1 -1
- reflex/components/radix/primitives/progress.pyi +226 -276
- reflex/components/radix/primitives/slider.py +1 -1
- reflex/components/radix/primitives/slider.pyi +82 -132
- reflex/components/radix/themes/base.py +8 -25
- reflex/components/radix/themes/base.pyi +171 -242
- reflex/components/radix/themes/color_mode.py +11 -20
- reflex/components/radix/themes/color_mode.pyi +198 -231
- reflex/components/radix/themes/components/__init__.pyi +1 -0
- reflex/components/radix/themes/components/alert_dialog.py +1 -1
- reflex/components/radix/themes/components/alert_dialog.pyi +129 -199
- reflex/components/radix/themes/components/aspect_ratio.py +1 -1
- reflex/components/radix/themes/components/aspect_ratio.pyi +16 -26
- reflex/components/radix/themes/components/avatar.py +1 -1
- reflex/components/radix/themes/components/avatar.pyi +69 -79
- reflex/components/radix/themes/components/badge.py +1 -1
- reflex/components/radix/themes/components/badge.pyi +87 -97
- reflex/components/radix/themes/components/button.py +1 -1
- reflex/components/radix/themes/components/button.pyi +97 -107
- reflex/components/radix/themes/components/callout.py +1 -1
- reflex/components/radix/themes/components/callout.pyi +317 -367
- reflex/components/radix/themes/components/card.py +1 -1
- reflex/components/radix/themes/components/card.pyi +37 -47
- reflex/components/radix/themes/components/checkbox.py +2 -4
- reflex/components/radix/themes/components/checkbox.pyi +205 -241
- reflex/components/radix/themes/components/checkbox_cards.py +1 -1
- reflex/components/radix/themes/components/checkbox_cards.pyi +92 -112
- reflex/components/radix/themes/components/checkbox_group.py +1 -1
- reflex/components/radix/themes/components/checkbox_group.pyi +84 -104
- reflex/components/radix/themes/components/context_menu.py +1 -1
- reflex/components/radix/themes/components/context_menu.pyi +230 -310
- reflex/components/radix/themes/components/data_list.py +6 -1
- reflex/components/radix/themes/components/data_list.pyi +131 -166
- reflex/components/radix/themes/components/dialog.py +1 -1
- reflex/components/radix/themes/components/dialog.pyi +132 -202
- reflex/components/radix/themes/components/dropdown_menu.py +1 -1
- reflex/components/radix/themes/components/dropdown_menu.pyi +241 -323
- reflex/components/radix/themes/components/hover_card.py +1 -1
- reflex/components/radix/themes/components/hover_card.pyi +86 -126
- reflex/components/radix/themes/components/icon_button.py +1 -1
- reflex/components/radix/themes/components/icon_button.pyi +97 -107
- reflex/components/radix/themes/components/inset.py +1 -1
- reflex/components/radix/themes/components/inset.pyi +46 -56
- reflex/components/radix/themes/components/popover.py +1 -1
- reflex/components/radix/themes/components/popover.pyi +91 -131
- reflex/components/radix/themes/components/progress.py +1 -1
- reflex/components/radix/themes/components/progress.pyi +70 -80
- reflex/components/radix/themes/components/radio.py +1 -1
- reflex/components/radix/themes/components/radio.pyi +68 -78
- reflex/components/radix/themes/components/radio_cards.py +1 -1
- reflex/components/radix/themes/components/radio_cards.pyi +96 -116
- reflex/components/radix/themes/components/radio_group.py +32 -31
- reflex/components/radix/themes/components/radio_group.pyi +230 -266
- reflex/components/radix/themes/components/scroll_area.py +1 -1
- reflex/components/radix/themes/components/scroll_area.pyi +20 -30
- reflex/components/radix/themes/components/segmented_control.py +1 -1
- reflex/components/radix/themes/components/segmented_control.pyi +88 -110
- reflex/components/radix/themes/components/select.py +1 -1
- reflex/components/radix/themes/components/select.pyi +365 -461
- reflex/components/radix/themes/components/separator.py +2 -4
- reflex/components/radix/themes/components/separator.pyi +68 -78
- reflex/components/radix/themes/components/skeleton.py +1 -1
- reflex/components/radix/themes/components/skeleton.pyi +22 -32
- reflex/components/radix/themes/components/slider.py +1 -1
- reflex/components/radix/themes/components/slider.pyi +74 -86
- reflex/components/radix/themes/components/spinner.py +1 -1
- reflex/components/radix/themes/components/spinner.pyi +18 -28
- reflex/components/radix/themes/components/switch.py +1 -1
- reflex/components/radix/themes/components/switch.pyi +70 -82
- reflex/components/radix/themes/components/table.py +1 -1
- reflex/components/radix/themes/components/table.pyi +254 -324
- reflex/components/radix/themes/components/tabs.py +1 -1
- reflex/components/radix/themes/components/tabs.pyi +134 -188
- reflex/components/radix/themes/components/text_area.py +1 -1
- reflex/components/radix/themes/components/text_area.pyi +95 -109
- reflex/components/radix/themes/components/text_field.py +1 -80
- reflex/components/radix/themes/components/text_field.pyi +245 -290
- reflex/components/radix/themes/components/tooltip.py +1 -1
- reflex/components/radix/themes/components/tooltip.pyi +25 -35
- reflex/components/radix/themes/layout/__init__.pyi +1 -0
- reflex/components/radix/themes/layout/base.py +1 -1
- reflex/components/radix/themes/layout/base.pyi +55 -65
- reflex/components/radix/themes/layout/box.pyi +33 -43
- reflex/components/radix/themes/layout/center.pyi +55 -65
- reflex/components/radix/themes/layout/container.py +2 -4
- reflex/components/radix/themes/layout/container.pyi +35 -45
- reflex/components/radix/themes/layout/flex.py +1 -1
- reflex/components/radix/themes/layout/flex.pyi +55 -65
- reflex/components/radix/themes/layout/grid.py +1 -1
- reflex/components/radix/themes/layout/grid.pyi +63 -73
- reflex/components/radix/themes/layout/list.py +1 -1
- reflex/components/radix/themes/layout/list.pyi +188 -238
- reflex/components/radix/themes/layout/section.py +2 -4
- reflex/components/radix/themes/layout/section.pyi +35 -45
- reflex/components/radix/themes/layout/spacer.pyi +55 -65
- reflex/components/radix/themes/layout/stack.py +1 -1
- reflex/components/radix/themes/layout/stack.pyi +125 -155
- reflex/components/radix/themes/typography/blockquote.py +1 -1
- reflex/components/radix/themes/typography/blockquote.pyi +88 -98
- reflex/components/radix/themes/typography/code.py +1 -1
- reflex/components/radix/themes/typography/code.pyi +89 -99
- reflex/components/radix/themes/typography/heading.py +1 -1
- reflex/components/radix/themes/typography/heading.pyi +95 -105
- reflex/components/radix/themes/typography/link.py +1 -1
- reflex/components/radix/themes/typography/link.pyi +101 -111
- reflex/components/radix/themes/typography/text.py +1 -1
- reflex/components/radix/themes/typography/text.pyi +494 -564
- reflex/components/react_player/audio.pyi +32 -58
- reflex/components/react_player/react_player.py +1 -1
- reflex/components/react_player/react_player.pyi +32 -58
- reflex/components/react_player/video.pyi +32 -58
- reflex/components/recharts/cartesian.py +22 -19
- reflex/components/recharts/cartesian.pyi +658 -840
- reflex/components/recharts/charts.py +3 -3
- reflex/components/recharts/charts.pyi +238 -342
- reflex/components/recharts/general.py +8 -8
- reflex/components/recharts/general.pyi +175 -225
- reflex/components/recharts/polar.py +11 -11
- reflex/components/recharts/polar.pyi +135 -171
- reflex/components/recharts/recharts.pyi +31 -51
- reflex/components/sonner/toast.py +27 -31
- reflex/components/sonner/toast.pyi +36 -45
- reflex/components/suneditor/editor.py +1 -1
- reflex/components/suneditor/editor.pyi +54 -76
- reflex/components/tags/cond_tag.py +6 -4
- reflex/components/tags/iter_tag.py +37 -25
- reflex/components/tags/match_tag.py +6 -4
- reflex/components/tags/tag.py +43 -28
- reflex/constants/base.py +3 -1
- reflex/constants/event.py +1 -0
- reflex/custom_components/custom_components.py +3 -1
- reflex/event.py +166 -108
- reflex/experimental/__init__.py +25 -6
- reflex/experimental/client_state.py +34 -57
- reflex/experimental/hooks.py +12 -17
- reflex/experimental/layout.py +4 -4
- reflex/experimental/layout.pyi +130 -180
- reflex/middleware/hydrate_middleware.py +2 -0
- reflex/middleware/middleware.py +3 -3
- reflex/model.py +22 -0
- reflex/reflex.py +4 -0
- reflex/state.py +491 -110
- reflex/style.py +56 -39
- reflex/testing.py +8 -3
- reflex/utils/exceptions.py +32 -0
- reflex/utils/exec.py +0 -14
- reflex/utils/format.py +80 -209
- reflex/utils/imports.py +16 -73
- reflex/utils/net.py +43 -0
- reflex/utils/path_ops.py +13 -1
- reflex/utils/prerequisites.py +81 -41
- reflex/utils/pyi_generator.py +12 -6
- reflex/utils/serializers.py +13 -41
- reflex/utils/telemetry.py +3 -2
- reflex/utils/types.py +47 -7
- reflex/{experimental/vars → vars}/__init__.py +6 -3
- reflex/vars/base.py +2563 -0
- reflex/vars/function.py +196 -0
- reflex/vars/number.py +1158 -0
- reflex/vars/object.py +562 -0
- reflex/vars/sequence.py +1604 -0
- {reflex-0.5.10a3.dist-info → reflex-0.6.0.dist-info}/METADATA +6 -9
- reflex-0.6.0.dist-info/RECORD +382 -0
- reflex/.templates/apps/demo/.gitignore +0 -4
- reflex/.templates/apps/demo/assets/favicon.ico +0 -0
- reflex/.templates/apps/demo/assets/github.svg +0 -10
- reflex/.templates/apps/demo/assets/icon.svg +0 -37
- reflex/.templates/apps/demo/assets/logo.svg +0 -68
- reflex/.templates/apps/demo/assets/paneleft.svg +0 -13
- reflex/.templates/apps/demo/code/__init__.py +0 -1
- reflex/.templates/apps/demo/code/demo.py +0 -127
- reflex/.templates/apps/demo/code/pages/__init__.py +0 -7
- reflex/.templates/apps/demo/code/pages/chatapp.py +0 -31
- reflex/.templates/apps/demo/code/pages/datatable.py +0 -360
- reflex/.templates/apps/demo/code/pages/forms.py +0 -257
- reflex/.templates/apps/demo/code/pages/graphing.py +0 -253
- reflex/.templates/apps/demo/code/pages/home.py +0 -56
- reflex/.templates/apps/demo/code/sidebar.py +0 -178
- reflex/.templates/apps/demo/code/state.py +0 -22
- reflex/.templates/apps/demo/code/states/form_state.py +0 -40
- reflex/.templates/apps/demo/code/states/pie_state.py +0 -47
- reflex/.templates/apps/demo/code/styles.py +0 -68
- reflex/.templates/apps/demo/code/webui/__init__.py +0 -0
- reflex/.templates/apps/demo/code/webui/components/__init__.py +0 -4
- reflex/.templates/apps/demo/code/webui/components/chat.py +0 -118
- reflex/.templates/apps/demo/code/webui/components/loading_icon.py +0 -19
- reflex/.templates/apps/demo/code/webui/components/modal.py +0 -56
- reflex/.templates/apps/demo/code/webui/components/navbar.py +0 -70
- reflex/.templates/apps/demo/code/webui/components/sidebar.py +0 -66
- reflex/.templates/apps/demo/code/webui/state.py +0 -146
- reflex/.templates/apps/demo/code/webui/styles.py +0 -88
- reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +0 -36
- reflex/experimental/vars/base.py +0 -583
- reflex/experimental/vars/function.py +0 -290
- reflex/experimental/vars/number.py +0 -1458
- reflex/experimental/vars/object.py +0 -804
- reflex/experimental/vars/sequence.py +0 -1764
- reflex/utils/watch.py +0 -96
- reflex/vars.py +0 -2604
- reflex/vars.pyi +0 -218
- reflex-0.5.10a3.dist-info/RECORD +0 -413
- {reflex-0.5.10a3.dist-info → reflex-0.6.0.dist-info}/LICENSE +0 -0
- {reflex-0.5.10a3.dist-info → reflex-0.6.0.dist-info}/WHEEL +0 -0
- {reflex-0.5.10a3.dist-info → reflex-0.6.0.dist-info}/entry_points.txt +0 -0
|
@@ -7,27 +7,38 @@ from pathlib import Path
|
|
|
7
7
|
from typing import Any, Callable, ClassVar, Dict, List, Optional, Union, overload
|
|
8
8
|
|
|
9
9
|
from reflex.components.component import Component, ComponentNamespace, MemoizationLeaf
|
|
10
|
+
from reflex.constants import Dirs
|
|
10
11
|
from reflex.event import (
|
|
11
12
|
CallableEventSpec,
|
|
12
13
|
EventHandler,
|
|
13
14
|
EventSpec,
|
|
14
15
|
)
|
|
15
16
|
from reflex.style import Style
|
|
16
|
-
from reflex.
|
|
17
|
+
from reflex.utils.imports import ImportVar
|
|
18
|
+
from reflex.vars import VarData
|
|
19
|
+
from reflex.vars.base import CallableVar, Var
|
|
17
20
|
|
|
18
21
|
DEFAULT_UPLOAD_ID: str
|
|
19
22
|
upload_files_context_var_data: VarData
|
|
20
23
|
|
|
21
24
|
@CallableVar
|
|
22
|
-
def upload_file(id_: str = DEFAULT_UPLOAD_ID) ->
|
|
25
|
+
def upload_file(id_: str = DEFAULT_UPLOAD_ID) -> Var: ...
|
|
23
26
|
@CallableVar
|
|
24
|
-
def selected_files(id_: str = DEFAULT_UPLOAD_ID) ->
|
|
27
|
+
def selected_files(id_: str = DEFAULT_UPLOAD_ID) -> Var: ...
|
|
25
28
|
@CallableEventSpec
|
|
26
29
|
def clear_selected_files(id_: str = DEFAULT_UPLOAD_ID) -> EventSpec: ...
|
|
27
30
|
def cancel_upload(upload_id: str) -> EventSpec: ...
|
|
28
31
|
def get_upload_dir() -> Path: ...
|
|
29
32
|
|
|
30
|
-
uploaded_files_url_prefix
|
|
33
|
+
uploaded_files_url_prefix = Var(
|
|
34
|
+
_js_expr="getBackendURL(env.UPLOAD)",
|
|
35
|
+
_var_data=VarData(
|
|
36
|
+
imports={
|
|
37
|
+
f"/{Dirs.STATE_PATH}": "getBackendURL",
|
|
38
|
+
"/env.json": ImportVar(tag="env", is_default=True),
|
|
39
|
+
}
|
|
40
|
+
),
|
|
41
|
+
).to(str)
|
|
31
42
|
|
|
32
43
|
def get_upload_url(file_path: str) -> Var[str]: ...
|
|
33
44
|
|
|
@@ -43,50 +54,40 @@ class UploadFilesProvider(Component):
|
|
|
43
54
|
class_name: Optional[Any] = None,
|
|
44
55
|
autofocus: Optional[bool] = None,
|
|
45
56
|
custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
|
|
46
|
-
on_blur: Optional[
|
|
47
|
-
|
|
48
|
-
] = None,
|
|
49
|
-
on_click: Optional[
|
|
50
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
51
|
-
] = None,
|
|
57
|
+
on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
58
|
+
on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
52
59
|
on_context_menu: Optional[
|
|
53
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
60
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
54
61
|
] = None,
|
|
55
62
|
on_double_click: Optional[
|
|
56
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
57
|
-
] = None,
|
|
58
|
-
on_focus: Optional[
|
|
59
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
60
|
-
] = None,
|
|
61
|
-
on_mount: Optional[
|
|
62
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
63
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
63
64
|
] = None,
|
|
65
|
+
on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
66
|
+
on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
64
67
|
on_mouse_down: Optional[
|
|
65
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
68
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
66
69
|
] = None,
|
|
67
70
|
on_mouse_enter: Optional[
|
|
68
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
71
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
69
72
|
] = None,
|
|
70
73
|
on_mouse_leave: Optional[
|
|
71
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
74
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
72
75
|
] = None,
|
|
73
76
|
on_mouse_move: Optional[
|
|
74
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
77
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
75
78
|
] = None,
|
|
76
79
|
on_mouse_out: Optional[
|
|
77
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
80
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
78
81
|
] = None,
|
|
79
82
|
on_mouse_over: Optional[
|
|
80
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
83
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
81
84
|
] = None,
|
|
82
85
|
on_mouse_up: Optional[
|
|
83
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
84
|
-
] = None,
|
|
85
|
-
on_scroll: Optional[
|
|
86
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
86
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
87
87
|
] = None,
|
|
88
|
+
on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
88
89
|
on_unmount: Optional[
|
|
89
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
90
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
90
91
|
] = None,
|
|
91
92
|
**props,
|
|
92
93
|
) -> "UploadFilesProvider":
|
|
@@ -115,7 +116,7 @@ class Upload(MemoizationLeaf):
|
|
|
115
116
|
def create( # type: ignore
|
|
116
117
|
cls,
|
|
117
118
|
*children,
|
|
118
|
-
accept: Optional[Union[
|
|
119
|
+
accept: Optional[Union[Dict[str, List], Var[Optional[Dict[str, List]]]]] = None,
|
|
119
120
|
disabled: Optional[Union[Var[bool], bool]] = None,
|
|
120
121
|
max_files: Optional[Union[Var[int], int]] = None,
|
|
121
122
|
max_size: Optional[Union[Var[int], int]] = None,
|
|
@@ -130,53 +131,41 @@ class Upload(MemoizationLeaf):
|
|
|
130
131
|
class_name: Optional[Any] = None,
|
|
131
132
|
autofocus: Optional[bool] = None,
|
|
132
133
|
custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
|
|
133
|
-
on_blur: Optional[
|
|
134
|
-
|
|
135
|
-
] = None,
|
|
136
|
-
on_click: Optional[
|
|
137
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
138
|
-
] = None,
|
|
134
|
+
on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
135
|
+
on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
139
136
|
on_context_menu: Optional[
|
|
140
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
137
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
141
138
|
] = None,
|
|
142
139
|
on_double_click: Optional[
|
|
143
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
144
|
-
] = None,
|
|
145
|
-
on_drop: Optional[
|
|
146
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
147
|
-
] = None,
|
|
148
|
-
on_focus: Optional[
|
|
149
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
150
|
-
] = None,
|
|
151
|
-
on_mount: Optional[
|
|
152
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
140
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
153
141
|
] = None,
|
|
142
|
+
on_drop: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
143
|
+
on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
144
|
+
on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
154
145
|
on_mouse_down: Optional[
|
|
155
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
146
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
156
147
|
] = None,
|
|
157
148
|
on_mouse_enter: Optional[
|
|
158
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
149
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
159
150
|
] = None,
|
|
160
151
|
on_mouse_leave: Optional[
|
|
161
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
152
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
162
153
|
] = None,
|
|
163
154
|
on_mouse_move: Optional[
|
|
164
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
155
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
165
156
|
] = None,
|
|
166
157
|
on_mouse_out: Optional[
|
|
167
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
158
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
168
159
|
] = None,
|
|
169
160
|
on_mouse_over: Optional[
|
|
170
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
161
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
171
162
|
] = None,
|
|
172
163
|
on_mouse_up: Optional[
|
|
173
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
174
|
-
] = None,
|
|
175
|
-
on_scroll: Optional[
|
|
176
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
164
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
177
165
|
] = None,
|
|
166
|
+
on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
178
167
|
on_unmount: Optional[
|
|
179
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
168
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
180
169
|
] = None,
|
|
181
170
|
**props,
|
|
182
171
|
) -> "Upload":
|
|
@@ -212,7 +201,7 @@ class StyledUpload(Upload):
|
|
|
212
201
|
def create( # type: ignore
|
|
213
202
|
cls,
|
|
214
203
|
*children,
|
|
215
|
-
accept: Optional[Union[
|
|
204
|
+
accept: Optional[Union[Dict[str, List], Var[Optional[Dict[str, List]]]]] = None,
|
|
216
205
|
disabled: Optional[Union[Var[bool], bool]] = None,
|
|
217
206
|
max_files: Optional[Union[Var[int], int]] = None,
|
|
218
207
|
max_size: Optional[Union[Var[int], int]] = None,
|
|
@@ -227,53 +216,41 @@ class StyledUpload(Upload):
|
|
|
227
216
|
class_name: Optional[Any] = None,
|
|
228
217
|
autofocus: Optional[bool] = None,
|
|
229
218
|
custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
|
|
230
|
-
on_blur: Optional[
|
|
231
|
-
|
|
232
|
-
] = None,
|
|
233
|
-
on_click: Optional[
|
|
234
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
235
|
-
] = None,
|
|
219
|
+
on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
220
|
+
on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
236
221
|
on_context_menu: Optional[
|
|
237
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
222
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
238
223
|
] = None,
|
|
239
224
|
on_double_click: Optional[
|
|
240
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
241
|
-
] = None,
|
|
242
|
-
on_drop: Optional[
|
|
243
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
244
|
-
] = None,
|
|
245
|
-
on_focus: Optional[
|
|
246
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
247
|
-
] = None,
|
|
248
|
-
on_mount: Optional[
|
|
249
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
225
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
250
226
|
] = None,
|
|
227
|
+
on_drop: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
228
|
+
on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
229
|
+
on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
251
230
|
on_mouse_down: Optional[
|
|
252
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
231
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
253
232
|
] = None,
|
|
254
233
|
on_mouse_enter: Optional[
|
|
255
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
234
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
256
235
|
] = None,
|
|
257
236
|
on_mouse_leave: Optional[
|
|
258
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
237
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
259
238
|
] = None,
|
|
260
239
|
on_mouse_move: Optional[
|
|
261
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
240
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
262
241
|
] = None,
|
|
263
242
|
on_mouse_out: Optional[
|
|
264
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
243
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
265
244
|
] = None,
|
|
266
245
|
on_mouse_over: Optional[
|
|
267
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
246
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
268
247
|
] = None,
|
|
269
248
|
on_mouse_up: Optional[
|
|
270
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
271
|
-
] = None,
|
|
272
|
-
on_scroll: Optional[
|
|
273
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
249
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
274
250
|
] = None,
|
|
251
|
+
on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
275
252
|
on_unmount: Optional[
|
|
276
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
253
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
277
254
|
] = None,
|
|
278
255
|
**props,
|
|
279
256
|
) -> "StyledUpload":
|
|
@@ -309,7 +286,7 @@ class UploadNamespace(ComponentNamespace):
|
|
|
309
286
|
@staticmethod
|
|
310
287
|
def __call__(
|
|
311
288
|
*children,
|
|
312
|
-
accept: Optional[Union[
|
|
289
|
+
accept: Optional[Union[Dict[str, List], Var[Optional[Dict[str, List]]]]] = None,
|
|
313
290
|
disabled: Optional[Union[Var[bool], bool]] = None,
|
|
314
291
|
max_files: Optional[Union[Var[int], int]] = None,
|
|
315
292
|
max_size: Optional[Union[Var[int], int]] = None,
|
|
@@ -324,53 +301,41 @@ class UploadNamespace(ComponentNamespace):
|
|
|
324
301
|
class_name: Optional[Any] = None,
|
|
325
302
|
autofocus: Optional[bool] = None,
|
|
326
303
|
custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
|
|
327
|
-
on_blur: Optional[
|
|
328
|
-
|
|
329
|
-
] = None,
|
|
330
|
-
on_click: Optional[
|
|
331
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
332
|
-
] = None,
|
|
304
|
+
on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
305
|
+
on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
333
306
|
on_context_menu: Optional[
|
|
334
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
307
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
335
308
|
] = None,
|
|
336
309
|
on_double_click: Optional[
|
|
337
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
338
|
-
] = None,
|
|
339
|
-
on_drop: Optional[
|
|
340
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
341
|
-
] = None,
|
|
342
|
-
on_focus: Optional[
|
|
343
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
344
|
-
] = None,
|
|
345
|
-
on_mount: Optional[
|
|
346
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
310
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
347
311
|
] = None,
|
|
312
|
+
on_drop: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
313
|
+
on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
314
|
+
on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
348
315
|
on_mouse_down: Optional[
|
|
349
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
316
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
350
317
|
] = None,
|
|
351
318
|
on_mouse_enter: Optional[
|
|
352
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
319
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
353
320
|
] = None,
|
|
354
321
|
on_mouse_leave: Optional[
|
|
355
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
322
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
356
323
|
] = None,
|
|
357
324
|
on_mouse_move: Optional[
|
|
358
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
325
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
359
326
|
] = None,
|
|
360
327
|
on_mouse_out: Optional[
|
|
361
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
328
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
362
329
|
] = None,
|
|
363
330
|
on_mouse_over: Optional[
|
|
364
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
331
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
365
332
|
] = None,
|
|
366
333
|
on_mouse_up: Optional[
|
|
367
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
368
|
-
] = None,
|
|
369
|
-
on_scroll: Optional[
|
|
370
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
334
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
371
335
|
] = None,
|
|
336
|
+
on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
372
337
|
on_unmount: Optional[
|
|
373
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
338
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
374
339
|
] = None,
|
|
375
340
|
**props,
|
|
376
341
|
) -> "StyledUpload":
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
import
|
|
6
|
-
|
|
5
|
+
from typing import Any, Dict, Literal, Optional, Union
|
|
6
|
+
|
|
7
|
+
from typing_extensions import get_args
|
|
7
8
|
|
|
8
9
|
from reflex.components.component import Component
|
|
9
10
|
from reflex.components.core.cond import color_mode_cond
|
|
@@ -15,7 +16,7 @@ from reflex.event import set_clipboard
|
|
|
15
16
|
from reflex.style import Style
|
|
16
17
|
from reflex.utils import format
|
|
17
18
|
from reflex.utils.imports import ImportDict, ImportVar
|
|
18
|
-
from reflex.vars import Var
|
|
19
|
+
from reflex.vars.base import LiteralVar, Var
|
|
19
20
|
|
|
20
21
|
LiteralCodeBlockTheme = Literal[
|
|
21
22
|
"a11y-dark",
|
|
@@ -349,6 +350,20 @@ LiteralCodeLanguage = Literal[
|
|
|
349
350
|
]
|
|
350
351
|
|
|
351
352
|
|
|
353
|
+
def replace_quotes_with_camel_case(value: str) -> str:
|
|
354
|
+
"""Replaces quotes in the given string with camel case format.
|
|
355
|
+
|
|
356
|
+
Args:
|
|
357
|
+
value (str): The string to be processed.
|
|
358
|
+
|
|
359
|
+
Returns:
|
|
360
|
+
str: The processed string with quotes replaced by camel case.
|
|
361
|
+
"""
|
|
362
|
+
for theme in get_args(LiteralCodeBlockTheme):
|
|
363
|
+
value = value.replace(f'"{theme}"', format.to_camel_case(theme))
|
|
364
|
+
return value
|
|
365
|
+
|
|
366
|
+
|
|
352
367
|
class CodeBlock(Component):
|
|
353
368
|
"""A code block."""
|
|
354
369
|
|
|
@@ -359,7 +374,7 @@ class CodeBlock(Component):
|
|
|
359
374
|
alias = "SyntaxHighlighter"
|
|
360
375
|
|
|
361
376
|
# The theme to use ("light" or "dark").
|
|
362
|
-
theme: Var[
|
|
377
|
+
theme: Var[Any] = "one-light" # type: ignore
|
|
363
378
|
|
|
364
379
|
# The language to use.
|
|
365
380
|
language: Var[LiteralCodeLanguage] = "python" # type: ignore
|
|
@@ -389,32 +404,42 @@ class CodeBlock(Component):
|
|
|
389
404
|
The import dict.
|
|
390
405
|
"""
|
|
391
406
|
imports_: ImportDict = {}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
407
|
+
|
|
408
|
+
themeString = str(self.theme)
|
|
409
|
+
|
|
410
|
+
selected_themes = []
|
|
411
|
+
|
|
412
|
+
for possibleTheme in get_args(LiteralCodeBlockTheme):
|
|
413
|
+
if format.to_camel_case(possibleTheme) in themeString:
|
|
414
|
+
selected_themes.append(possibleTheme)
|
|
415
|
+
if possibleTheme in themeString:
|
|
416
|
+
selected_themes.append(possibleTheme)
|
|
417
|
+
|
|
418
|
+
selected_themes = sorted(set(map(self.convert_theme_name, selected_themes)))
|
|
395
419
|
|
|
396
420
|
imports_.update(
|
|
397
421
|
{
|
|
398
|
-
f"react-syntax-highlighter/dist/cjs/styles/prism/{
|
|
422
|
+
f"react-syntax-highlighter/dist/cjs/styles/prism/{theme}": [
|
|
399
423
|
ImportVar(
|
|
400
|
-
tag=format.to_camel_case(
|
|
424
|
+
tag=format.to_camel_case(theme),
|
|
401
425
|
is_default=True,
|
|
402
426
|
install=False,
|
|
403
427
|
)
|
|
404
428
|
]
|
|
405
|
-
for theme in
|
|
429
|
+
for theme in selected_themes
|
|
406
430
|
}
|
|
407
431
|
)
|
|
408
432
|
|
|
409
433
|
if (
|
|
410
434
|
self.language is not None
|
|
411
|
-
and self.language.
|
|
435
|
+
and (language_without_quotes := str(self.language).replace('"', ""))
|
|
436
|
+
in LiteralCodeLanguage.__args__ # type: ignore
|
|
412
437
|
):
|
|
413
438
|
imports_[
|
|
414
|
-
f"react-syntax-highlighter/dist/cjs/languages/prism/{
|
|
439
|
+
f"react-syntax-highlighter/dist/cjs/languages/prism/{language_without_quotes}"
|
|
415
440
|
] = [
|
|
416
441
|
ImportVar(
|
|
417
|
-
tag=format.to_camel_case(
|
|
442
|
+
tag=format.to_camel_case(language_without_quotes),
|
|
418
443
|
is_default=True,
|
|
419
444
|
install=False,
|
|
420
445
|
)
|
|
@@ -425,9 +450,10 @@ class CodeBlock(Component):
|
|
|
425
450
|
def _get_custom_code(self) -> Optional[str]:
|
|
426
451
|
if (
|
|
427
452
|
self.language is not None
|
|
428
|
-
and self.language.
|
|
453
|
+
and (language_without_quotes := str(self.language).replace('"', ""))
|
|
454
|
+
in LiteralCodeLanguage.__args__ # type: ignore
|
|
429
455
|
):
|
|
430
|
-
return f"{self.alias}.registerLanguage('{
|
|
456
|
+
return f"{self.alias}.registerLanguage('{language_without_quotes}', {format.to_camel_case(language_without_quotes)})"
|
|
431
457
|
|
|
432
458
|
@classmethod
|
|
433
459
|
def create(
|
|
@@ -453,7 +479,10 @@ class CodeBlock(Component):
|
|
|
453
479
|
|
|
454
480
|
if "theme" not in props:
|
|
455
481
|
# Default color scheme responds to global color mode.
|
|
456
|
-
props["theme"] = color_mode_cond(
|
|
482
|
+
props["theme"] = color_mode_cond(
|
|
483
|
+
light=Var(_js_expr="oneLight"),
|
|
484
|
+
dark=Var(_js_expr="oneDark"),
|
|
485
|
+
)
|
|
457
486
|
|
|
458
487
|
# react-syntax-highlighter doesnt have an explicit "light" or "dark" theme so we use one-light and one-dark
|
|
459
488
|
# themes respectively to ensure code compatibility.
|
|
@@ -484,7 +513,7 @@ class CodeBlock(Component):
|
|
|
484
513
|
if children:
|
|
485
514
|
props["code"] = children[0]
|
|
486
515
|
if not isinstance(props["code"], Var):
|
|
487
|
-
props["code"] =
|
|
516
|
+
props["code"] = LiteralVar.create(props["code"])
|
|
488
517
|
|
|
489
518
|
# Create the component.
|
|
490
519
|
code_block = super().create(
|
|
@@ -503,18 +532,15 @@ class CodeBlock(Component):
|
|
|
503
532
|
|
|
504
533
|
def _render(self):
|
|
505
534
|
out = super()._render()
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
)
|
|
514
|
-
|
|
515
|
-
out.special_props.add(
|
|
516
|
-
Var.create_safe(f"children={str(self.code)}", _var_is_string=False)
|
|
517
|
-
)
|
|
535
|
+
|
|
536
|
+
theme = self.theme._replace(
|
|
537
|
+
_js_expr=replace_quotes_with_camel_case(str(self.theme))
|
|
538
|
+
)
|
|
539
|
+
|
|
540
|
+
out.add_props(style=theme).remove_props("theme", "code").add_props(
|
|
541
|
+
children=self.code
|
|
542
|
+
)
|
|
543
|
+
|
|
518
544
|
return out
|
|
519
545
|
|
|
520
546
|
@staticmethod
|