reflex 0.6.0a1__py3-none-any.whl → 0.6.0a3__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 +2 -2
- reflex/__init__.py +8 -2
- reflex/__init__.pyi +2 -1
- reflex/app.py +10 -4
- reflex/base.py +1 -1
- reflex/compiler/compiler.py +2 -2
- reflex/compiler/utils.py +3 -3
- reflex/components/base/app_wrap.py +2 -2
- reflex/components/base/app_wrap.pyi +17 -27
- reflex/components/base/bare.py +4 -5
- reflex/components/base/body.pyi +17 -27
- reflex/components/base/document.pyi +81 -131
- reflex/components/base/error_boundary.py +6 -7
- reflex/components/base/error_boundary.pyi +20 -33
- reflex/components/base/fragment.pyi +17 -27
- reflex/components/base/head.pyi +33 -53
- reflex/components/base/link.py +1 -1
- reflex/components/base/link.pyi +33 -54
- reflex/components/base/meta.pyi +65 -105
- reflex/components/base/script.py +1 -2
- reflex/components/base/script.pyi +21 -38
- reflex/components/component.py +45 -47
- reflex/components/core/banner.py +23 -27
- reflex/components/core/banner.pyi +134 -171
- reflex/components/core/breakpoints.py +3 -1
- reflex/components/core/client_side_routing.py +2 -3
- reflex/components/core/client_side_routing.pyi +33 -54
- reflex/components/core/clipboard.py +2 -1
- reflex/components/core/clipboard.pyi +20 -33
- reflex/components/core/cond.py +5 -5
- reflex/components/core/debounce.py +5 -5
- reflex/components/core/debounce.pyi +20 -33
- reflex/components/core/foreach.py +3 -4
- reflex/components/core/html.py +1 -1
- reflex/components/core/html.pyi +35 -46
- reflex/components/core/match.py +17 -17
- reflex/components/core/upload.py +17 -23
- reflex/components/core/upload.pyi +78 -124
- reflex/components/datadisplay/code.py +9 -10
- reflex/components/datadisplay/code.pyi +302 -412
- reflex/components/datadisplay/dataeditor.py +8 -10
- reflex/components/datadisplay/dataeditor.pyi +40 -53
- reflex/components/el/element.pyi +17 -27
- reflex/components/el/elements/base.py +1 -1
- reflex/components/el/elements/base.pyi +34 -45
- reflex/components/el/elements/forms.py +16 -16
- reflex/components/el/elements/forms.pyi +554 -707
- reflex/components/el/elements/inline.py +1 -1
- reflex/components/el/elements/inline.pyi +937 -1218
- reflex/components/el/elements/media.py +1 -1
- reflex/components/el/elements/media.pyi +786 -997
- reflex/components/el/elements/metadata.py +3 -6
- reflex/components/el/elements/metadata.pyi +181 -242
- reflex/components/el/elements/other.py +1 -1
- reflex/components/el/elements/other.pyi +235 -306
- reflex/components/el/elements/scripts.py +1 -1
- reflex/components/el/elements/scripts.pyi +109 -140
- reflex/components/el/elements/sectioning.py +0 -2
- reflex/components/el/elements/sectioning.pyi +496 -647
- reflex/components/el/elements/tables.py +1 -1
- reflex/components/el/elements/tables.pyi +351 -452
- reflex/components/el/elements/typography.py +1 -1
- reflex/components/el/elements/typography.pyi +506 -657
- reflex/components/gridjs/datatable.py +6 -9
- reflex/components/gridjs/datatable.pyi +35 -56
- reflex/components/lucide/icon.py +1 -1
- reflex/components/lucide/icon.pyi +33 -54
- reflex/components/markdown/markdown.py +26 -31
- reflex/components/markdown/markdown.pyi +27 -37
- reflex/components/moment/moment.py +13 -12
- reflex/components/moment/moment.pyi +23 -35
- reflex/components/next/base.pyi +17 -27
- reflex/components/next/image.py +1 -1
- reflex/components/next/image.pyi +22 -37
- reflex/components/next/link.py +1 -1
- reflex/components/next/link.pyi +17 -28
- reflex/components/next/video.py +1 -1
- reflex/components/next/video.pyi +17 -28
- reflex/components/plotly/plotly.py +12 -13
- reflex/components/plotly/plotly.pyi +39 -54
- reflex/components/props.py +1 -1
- reflex/components/radix/__init__.pyi +1 -0
- reflex/components/radix/primitives/__init__.pyi +1 -0
- reflex/components/radix/primitives/accordion.py +4 -4
- reflex/components/radix/primitives/accordion.pyi +424 -495
- reflex/components/radix/primitives/base.py +1 -1
- reflex/components/radix/primitives/base.pyi +33 -54
- reflex/components/radix/primitives/drawer.py +1 -1
- reflex/components/radix/primitives/drawer.pyi +172 -273
- reflex/components/radix/primitives/form.py +1 -1
- reflex/components/radix/primitives/form.pyi +257 -364
- reflex/components/radix/primitives/progress.py +1 -1
- reflex/components/radix/primitives/progress.pyi +231 -282
- reflex/components/radix/primitives/slider.py +1 -1
- reflex/components/radix/primitives/slider.pyi +87 -138
- reflex/components/radix/themes/base.py +3 -24
- reflex/components/radix/themes/base.pyi +178 -250
- reflex/components/radix/themes/color_mode.py +5 -5
- reflex/components/radix/themes/color_mode.pyi +187 -220
- reflex/components/radix/themes/components/alert_dialog.py +1 -1
- reflex/components/radix/themes/components/alert_dialog.pyi +136 -207
- reflex/components/radix/themes/components/aspect_ratio.py +1 -1
- reflex/components/radix/themes/components/aspect_ratio.pyi +17 -28
- reflex/components/radix/themes/components/avatar.py +1 -1
- reflex/components/radix/themes/components/avatar.pyi +70 -81
- reflex/components/radix/themes/components/badge.py +1 -1
- reflex/components/radix/themes/components/badge.pyi +88 -99
- reflex/components/radix/themes/components/button.py +1 -1
- reflex/components/radix/themes/components/button.pyi +98 -109
- reflex/components/radix/themes/components/callout.py +1 -1
- reflex/components/radix/themes/components/callout.pyi +322 -373
- reflex/components/radix/themes/components/card.py +1 -1
- reflex/components/radix/themes/components/card.pyi +38 -49
- reflex/components/radix/themes/components/checkbox.py +1 -2
- reflex/components/radix/themes/components/checkbox.pyi +208 -245
- reflex/components/radix/themes/components/checkbox_cards.py +1 -1
- reflex/components/radix/themes/components/checkbox_cards.pyi +94 -115
- reflex/components/radix/themes/components/checkbox_group.py +1 -1
- reflex/components/radix/themes/components/checkbox_group.pyi +86 -107
- reflex/components/radix/themes/components/context_menu.py +1 -1
- reflex/components/radix/themes/components/context_menu.pyi +238 -319
- reflex/components/radix/themes/components/data_list.py +1 -1
- reflex/components/radix/themes/components/data_list.pyi +130 -171
- reflex/components/radix/themes/components/dialog.py +1 -1
- reflex/components/radix/themes/components/dialog.pyi +139 -210
- reflex/components/radix/themes/components/dropdown_menu.py +1 -1
- reflex/components/radix/themes/components/dropdown_menu.pyi +249 -332
- reflex/components/radix/themes/components/hover_card.py +1 -1
- reflex/components/radix/themes/components/hover_card.pyi +90 -131
- reflex/components/radix/themes/components/icon_button.py +2 -3
- reflex/components/radix/themes/components/icon_button.pyi +98 -109
- reflex/components/radix/themes/components/inset.py +1 -1
- reflex/components/radix/themes/components/inset.pyi +47 -58
- reflex/components/radix/themes/components/popover.py +1 -1
- reflex/components/radix/themes/components/popover.pyi +95 -136
- reflex/components/radix/themes/components/progress.py +1 -1
- reflex/components/radix/themes/components/progress.pyi +71 -82
- reflex/components/radix/themes/components/radio.py +1 -1
- reflex/components/radix/themes/components/radio.pyi +69 -80
- reflex/components/radix/themes/components/radio_cards.py +1 -1
- reflex/components/radix/themes/components/radio_cards.pyi +98 -119
- reflex/components/radix/themes/components/radio_group.py +8 -11
- reflex/components/radix/themes/components/radio_group.pyi +228 -271
- reflex/components/radix/themes/components/scroll_area.py +1 -1
- reflex/components/radix/themes/components/scroll_area.pyi +21 -32
- reflex/components/radix/themes/components/segmented_control.py +1 -1
- reflex/components/radix/themes/components/segmented_control.pyi +90 -113
- reflex/components/radix/themes/components/select.py +2 -3
- reflex/components/radix/themes/components/select.pyi +374 -471
- reflex/components/radix/themes/components/separator.py +1 -2
- reflex/components/radix/themes/components/separator.pyi +69 -80
- reflex/components/radix/themes/components/skeleton.py +1 -1
- reflex/components/radix/themes/components/skeleton.pyi +23 -34
- reflex/components/radix/themes/components/slider.py +2 -3
- reflex/components/radix/themes/components/slider.pyi +75 -88
- reflex/components/radix/themes/components/spinner.py +1 -1
- reflex/components/radix/themes/components/spinner.pyi +19 -30
- reflex/components/radix/themes/components/switch.py +1 -1
- reflex/components/radix/themes/components/switch.pyi +71 -84
- reflex/components/radix/themes/components/table.py +1 -1
- reflex/components/radix/themes/components/table.pyi +261 -332
- reflex/components/radix/themes/components/tabs.py +1 -1
- reflex/components/radix/themes/components/tabs.pyi +139 -194
- reflex/components/radix/themes/components/text_area.py +1 -1
- reflex/components/radix/themes/components/text_area.pyi +96 -111
- reflex/components/radix/themes/components/text_field.py +1 -1
- reflex/components/radix/themes/components/text_field.pyi +247 -286
- reflex/components/radix/themes/components/tooltip.py +1 -1
- reflex/components/radix/themes/components/tooltip.pyi +26 -37
- 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 +56 -67
- reflex/components/radix/themes/layout/box.pyi +34 -45
- reflex/components/radix/themes/layout/center.pyi +56 -67
- reflex/components/radix/themes/layout/container.py +1 -2
- reflex/components/radix/themes/layout/container.pyi +36 -47
- reflex/components/radix/themes/layout/flex.py +1 -1
- reflex/components/radix/themes/layout/flex.pyi +56 -67
- reflex/components/radix/themes/layout/grid.py +1 -1
- reflex/components/radix/themes/layout/grid.pyi +64 -75
- reflex/components/radix/themes/layout/list.py +5 -6
- reflex/components/radix/themes/layout/list.pyi +193 -244
- reflex/components/radix/themes/layout/section.py +1 -2
- reflex/components/radix/themes/layout/section.pyi +36 -47
- reflex/components/radix/themes/layout/spacer.pyi +56 -67
- reflex/components/radix/themes/layout/stack.py +1 -1
- reflex/components/radix/themes/layout/stack.pyi +128 -159
- reflex/components/radix/themes/typography/blockquote.py +1 -1
- reflex/components/radix/themes/typography/blockquote.pyi +89 -100
- reflex/components/radix/themes/typography/code.py +1 -1
- reflex/components/radix/themes/typography/code.pyi +90 -101
- reflex/components/radix/themes/typography/heading.py +1 -1
- reflex/components/radix/themes/typography/heading.pyi +96 -107
- reflex/components/radix/themes/typography/link.py +1 -1
- reflex/components/radix/themes/typography/link.pyi +102 -113
- reflex/components/radix/themes/typography/text.py +1 -1
- reflex/components/radix/themes/typography/text.pyi +501 -572
- reflex/components/react_player/audio.pyi +33 -60
- reflex/components/react_player/react_player.py +1 -1
- reflex/components/react_player/react_player.pyi +33 -60
- reflex/components/react_player/video.pyi +33 -60
- reflex/components/recharts/cartesian.py +2 -3
- reflex/components/recharts/cartesian.pyi +678 -861
- reflex/components/recharts/charts.py +4 -5
- reflex/components/recharts/charts.pyi +252 -357
- reflex/components/recharts/general.py +1 -2
- reflex/components/recharts/general.pyi +180 -231
- reflex/components/recharts/polar.py +4 -5
- reflex/components/recharts/polar.pyi +144 -181
- reflex/components/recharts/recharts.pyi +33 -53
- reflex/components/sonner/toast.py +16 -17
- reflex/components/sonner/toast.pyi +36 -47
- reflex/components/suneditor/editor.py +2 -3
- reflex/components/suneditor/editor.pyi +55 -78
- reflex/components/tags/cond_tag.py +6 -4
- reflex/components/tags/iter_tag.py +28 -16
- reflex/components/tags/match_tag.py +6 -4
- reflex/components/tags/tag.py +40 -23
- reflex/custom_components/custom_components.py +3 -1
- reflex/event.py +115 -67
- reflex/experimental/client_state.py +18 -18
- reflex/experimental/hooks.py +16 -16
- reflex/experimental/layout.py +5 -5
- reflex/experimental/layout.pyi +136 -187
- reflex/middleware/hydrate_middleware.py +2 -0
- reflex/middleware/middleware.py +3 -3
- reflex/state.py +149 -82
- reflex/style.py +21 -22
- reflex/utils/exceptions.py +20 -0
- reflex/utils/format.py +54 -34
- reflex/utils/imports.py +16 -73
- reflex/utils/prerequisites.py +15 -8
- reflex/utils/pyi_generator.py +13 -8
- reflex/utils/serializers.py +12 -22
- reflex/utils/telemetry.py +3 -2
- reflex/utils/types.py +11 -6
- reflex/{ivars → vars}/__init__.py +6 -2
- reflex/{ivars → vars}/base.py +599 -216
- reflex/{ivars → vars}/function.py +15 -19
- reflex/{ivars → vars}/number.py +41 -20
- reflex/{ivars → vars}/object.py +28 -30
- reflex/{ivars → vars}/sequence.py +53 -42
- {reflex-0.6.0a1.dist-info → reflex-0.6.0a3.dist-info}/METADATA +4 -6
- reflex-0.6.0a3.dist-info/RECORD +382 -0
- reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +0 -36
- reflex/vars.py +0 -501
- reflex-0.6.0a1.dist-info/RECORD +0 -384
- {reflex-0.6.0a1.dist-info → reflex-0.6.0a3.dist-info}/LICENSE +0 -0
- {reflex-0.6.0a1.dist-info → reflex-0.6.0a3.dist-info}/WHEEL +0 -0
- {reflex-0.6.0a1.dist-info → reflex-0.6.0a3.dist-info}/entry_points.txt +0 -0
|
@@ -9,7 +9,8 @@ from reflex.components.tags.tag import Tag
|
|
|
9
9
|
from reflex.event import EventChain, EventHandler
|
|
10
10
|
from reflex.utils.format import format_prop, wrap
|
|
11
11
|
from reflex.utils.imports import ImportVar
|
|
12
|
-
from reflex.vars import
|
|
12
|
+
from reflex.vars import get_unique_variable_name
|
|
13
|
+
from reflex.vars.base import Var
|
|
13
14
|
|
|
14
15
|
|
|
15
16
|
class Clipboard(Fragment):
|
|
@@ -7,10 +7,9 @@ from typing import Any, Callable, Dict, List, Optional, Union, overload
|
|
|
7
7
|
|
|
8
8
|
from reflex.components.base.fragment import Fragment
|
|
9
9
|
from reflex.event import EventHandler, EventSpec
|
|
10
|
-
from reflex.ivars.base import ImmutableVar
|
|
11
10
|
from reflex.style import Style
|
|
12
11
|
from reflex.utils.imports import ImportVar
|
|
13
|
-
from reflex.vars import Var
|
|
12
|
+
from reflex.vars.base import Var
|
|
14
13
|
|
|
15
14
|
class Clipboard(Fragment):
|
|
16
15
|
@overload
|
|
@@ -18,63 +17,51 @@ class Clipboard(Fragment):
|
|
|
18
17
|
def create( # type: ignore
|
|
19
18
|
cls,
|
|
20
19
|
*children,
|
|
21
|
-
targets: Optional[Union[
|
|
20
|
+
targets: Optional[Union[List[str], Var[List[str]]]] = None,
|
|
22
21
|
on_paste_event_actions: Optional[
|
|
23
|
-
Union[
|
|
22
|
+
Union[Dict[str, Union[bool, int]], Var[Dict[str, Union[bool, int]]]]
|
|
24
23
|
] = None,
|
|
25
24
|
style: Optional[Style] = None,
|
|
26
25
|
key: Optional[Any] = None,
|
|
27
26
|
id: Optional[Any] = None,
|
|
28
27
|
class_name: Optional[Any] = None,
|
|
29
28
|
autofocus: Optional[bool] = None,
|
|
30
|
-
custom_attrs: Optional[Dict[str, Union[
|
|
31
|
-
on_blur: Optional[
|
|
32
|
-
|
|
33
|
-
] = None,
|
|
34
|
-
on_click: Optional[
|
|
35
|
-
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
36
|
-
] = None,
|
|
29
|
+
custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
|
|
30
|
+
on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
31
|
+
on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
37
32
|
on_context_menu: Optional[
|
|
38
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
33
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
39
34
|
] = None,
|
|
40
35
|
on_double_click: Optional[
|
|
41
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
42
|
-
] = None,
|
|
43
|
-
on_focus: Optional[
|
|
44
|
-
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
45
|
-
] = None,
|
|
46
|
-
on_mount: Optional[
|
|
47
|
-
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
36
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
48
37
|
] = None,
|
|
38
|
+
on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
39
|
+
on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
49
40
|
on_mouse_down: Optional[
|
|
50
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
41
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
51
42
|
] = None,
|
|
52
43
|
on_mouse_enter: Optional[
|
|
53
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
44
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
54
45
|
] = None,
|
|
55
46
|
on_mouse_leave: Optional[
|
|
56
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
47
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
57
48
|
] = None,
|
|
58
49
|
on_mouse_move: Optional[
|
|
59
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
50
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
60
51
|
] = None,
|
|
61
52
|
on_mouse_out: Optional[
|
|
62
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
53
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
63
54
|
] = None,
|
|
64
55
|
on_mouse_over: Optional[
|
|
65
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
56
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
66
57
|
] = None,
|
|
67
58
|
on_mouse_up: Optional[
|
|
68
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
69
|
-
] = None,
|
|
70
|
-
on_paste: Optional[
|
|
71
|
-
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
72
|
-
] = None,
|
|
73
|
-
on_scroll: Optional[
|
|
74
|
-
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
59
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
75
60
|
] = None,
|
|
61
|
+
on_paste: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
62
|
+
on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
76
63
|
on_unmount: Optional[
|
|
77
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
64
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
78
65
|
] = None,
|
|
79
66
|
**props,
|
|
80
67
|
) -> "Clipboard":
|
reflex/components/core/cond.py
CHANGED
|
@@ -8,11 +8,11 @@ from reflex.components.base.fragment import Fragment
|
|
|
8
8
|
from reflex.components.component import BaseComponent, Component, MemoizationLeaf
|
|
9
9
|
from reflex.components.tags import CondTag, Tag
|
|
10
10
|
from reflex.constants import Dirs
|
|
11
|
-
from reflex.ivars.base import ImmutableVar, LiteralVar
|
|
12
|
-
from reflex.ivars.number import ternary_operation
|
|
13
11
|
from reflex.style import LIGHT_COLOR_MODE, resolved_color_mode
|
|
14
12
|
from reflex.utils.imports import ImportDict, ImportVar
|
|
15
|
-
from reflex.vars import
|
|
13
|
+
from reflex.vars import VarData
|
|
14
|
+
from reflex.vars.base import LiteralVar, Var
|
|
15
|
+
from reflex.vars.number import ternary_operation
|
|
16
16
|
|
|
17
17
|
_IS_TRUE_IMPORT: ImportDict = {
|
|
18
18
|
f"/{Dirs.STATE_PATH}": [ImportVar(tag="isTrue")],
|
|
@@ -119,10 +119,10 @@ def cond(condition: Any, c1: Component) -> Component: ...
|
|
|
119
119
|
|
|
120
120
|
|
|
121
121
|
@overload
|
|
122
|
-
def cond(condition: Any, c1: Any, c2: Any) ->
|
|
122
|
+
def cond(condition: Any, c1: Any, c2: Any) -> Var: ...
|
|
123
123
|
|
|
124
124
|
|
|
125
|
-
def cond(condition: Any, c1: Any, c2: Any = None) -> Component |
|
|
125
|
+
def cond(condition: Any, c1: Any, c2: Any = None) -> Component | Var:
|
|
126
126
|
"""Create a conditional component or Prop.
|
|
127
127
|
|
|
128
128
|
Args:
|
|
@@ -7,8 +7,8 @@ from typing import Any, Type, Union
|
|
|
7
7
|
from reflex.components.component import Component
|
|
8
8
|
from reflex.constants import EventTriggers
|
|
9
9
|
from reflex.event import EventHandler
|
|
10
|
-
from reflex.
|
|
11
|
-
from reflex.vars import Var
|
|
10
|
+
from reflex.vars import VarData
|
|
11
|
+
from reflex.vars.base import Var
|
|
12
12
|
|
|
13
13
|
DEFAULT_DEBOUNCE_TIMEOUT = 300
|
|
14
14
|
|
|
@@ -107,14 +107,14 @@ class DebounceInput(Component):
|
|
|
107
107
|
props[field] = getattr(child, field)
|
|
108
108
|
child_ref = child.get_ref()
|
|
109
109
|
if props.get("input_ref") is None and child_ref:
|
|
110
|
-
props["input_ref"] =
|
|
110
|
+
props["input_ref"] = Var(_js_expr=child_ref, _var_type=str)
|
|
111
111
|
props["id"] = child.id
|
|
112
112
|
|
|
113
113
|
# Set the child element to wrap, including any imports/hooks from the child.
|
|
114
114
|
props.setdefault(
|
|
115
115
|
"element",
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
Var(
|
|
117
|
+
_js_expr=str(child.alias or child.tag),
|
|
118
118
|
_var_type=Type[Component],
|
|
119
119
|
_var_data=VarData(
|
|
120
120
|
imports=child._get_imports(),
|
|
@@ -7,9 +7,8 @@ from typing import Any, Callable, Dict, Optional, Type, Union, overload
|
|
|
7
7
|
|
|
8
8
|
from reflex.components.component import Component
|
|
9
9
|
from reflex.event import EventHandler, EventSpec
|
|
10
|
-
from reflex.ivars.base import ImmutableVar
|
|
11
10
|
from reflex.style import Style
|
|
12
|
-
from reflex.vars import Var
|
|
11
|
+
from reflex.vars.base import Var
|
|
13
12
|
|
|
14
13
|
DEFAULT_DEBOUNCE_TIMEOUT = 300
|
|
15
14
|
|
|
@@ -23,62 +22,50 @@ class DebounceInput(Component):
|
|
|
23
22
|
debounce_timeout: Optional[Union[Var[int], int]] = None,
|
|
24
23
|
force_notify_by_enter: Optional[Union[Var[bool], bool]] = None,
|
|
25
24
|
force_notify_on_blur: Optional[Union[Var[bool], bool]] = None,
|
|
26
|
-
value: Optional[Union[Var[Union[float, int, str]],
|
|
25
|
+
value: Optional[Union[Var[Union[float, int, str]], float, int, str]] = None,
|
|
27
26
|
input_ref: Optional[Union[Var[str], str]] = None,
|
|
28
|
-
element: Optional[Union[
|
|
27
|
+
element: Optional[Union[Type[Component], Var[Type[Component]]]] = None,
|
|
29
28
|
style: Optional[Style] = None,
|
|
30
29
|
key: Optional[Any] = None,
|
|
31
30
|
id: Optional[Any] = None,
|
|
32
31
|
class_name: Optional[Any] = None,
|
|
33
32
|
autofocus: Optional[bool] = None,
|
|
34
|
-
custom_attrs: Optional[Dict[str, Union[
|
|
35
|
-
on_blur: Optional[
|
|
36
|
-
|
|
37
|
-
] = None,
|
|
38
|
-
on_change: Optional[
|
|
39
|
-
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
40
|
-
] = None,
|
|
41
|
-
on_click: Optional[
|
|
42
|
-
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
43
|
-
] = None,
|
|
33
|
+
custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
|
|
34
|
+
on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
35
|
+
on_change: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
36
|
+
on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
44
37
|
on_context_menu: Optional[
|
|
45
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
38
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
46
39
|
] = None,
|
|
47
40
|
on_double_click: Optional[
|
|
48
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
49
|
-
] = None,
|
|
50
|
-
on_focus: Optional[
|
|
51
|
-
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
52
|
-
] = None,
|
|
53
|
-
on_mount: Optional[
|
|
54
|
-
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
41
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
55
42
|
] = None,
|
|
43
|
+
on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
44
|
+
on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
56
45
|
on_mouse_down: Optional[
|
|
57
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
46
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
58
47
|
] = None,
|
|
59
48
|
on_mouse_enter: Optional[
|
|
60
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
49
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
61
50
|
] = None,
|
|
62
51
|
on_mouse_leave: Optional[
|
|
63
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
52
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
64
53
|
] = None,
|
|
65
54
|
on_mouse_move: Optional[
|
|
66
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
55
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
67
56
|
] = None,
|
|
68
57
|
on_mouse_out: Optional[
|
|
69
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
58
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
70
59
|
] = None,
|
|
71
60
|
on_mouse_over: Optional[
|
|
72
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
61
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
73
62
|
] = None,
|
|
74
63
|
on_mouse_up: Optional[
|
|
75
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
76
|
-
] = None,
|
|
77
|
-
on_scroll: Optional[
|
|
78
|
-
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
64
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
79
65
|
] = None,
|
|
66
|
+
on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
80
67
|
on_unmount: Optional[
|
|
81
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
68
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
82
69
|
] = None,
|
|
83
70
|
**props,
|
|
84
71
|
) -> "DebounceInput":
|
|
@@ -9,9 +9,8 @@ from reflex.components.base.fragment import Fragment
|
|
|
9
9
|
from reflex.components.component import Component
|
|
10
10
|
from reflex.components.tags import IterTag
|
|
11
11
|
from reflex.constants import MemoizationMode
|
|
12
|
-
from reflex.ivars.base import ImmutableVar
|
|
13
12
|
from reflex.state import ComponentState
|
|
14
|
-
from reflex.vars import Var
|
|
13
|
+
from reflex.vars.base import LiteralVar, Var
|
|
15
14
|
|
|
16
15
|
|
|
17
16
|
class ForeachVarError(TypeError):
|
|
@@ -52,7 +51,7 @@ class Foreach(Component):
|
|
|
52
51
|
ForeachVarError: If the iterable is of type Any.
|
|
53
52
|
TypeError: If the render function is a ComponentState.
|
|
54
53
|
"""
|
|
55
|
-
iterable =
|
|
54
|
+
iterable = LiteralVar.create(iterable)
|
|
56
55
|
if iterable._var_type == Any:
|
|
57
56
|
raise ForeachVarError(
|
|
58
57
|
f"Could not foreach over var `{str(iterable)}` of type Any. "
|
|
@@ -130,7 +129,7 @@ class Foreach(Component):
|
|
|
130
129
|
iterable_state=str(tag.iterable),
|
|
131
130
|
arg_name=tag.arg_var_name,
|
|
132
131
|
arg_index=tag.get_index_var_arg(),
|
|
133
|
-
iterable_type=tag.iterable.
|
|
132
|
+
iterable_type=tag.iterable._var_type.mro()[0].__name__,
|
|
134
133
|
)
|
|
135
134
|
|
|
136
135
|
|
reflex/components/core/html.py
CHANGED
reflex/components/core/html.pyi
CHANGED
|
@@ -7,9 +7,8 @@ from typing import Any, Callable, Dict, Optional, Union, overload
|
|
|
7
7
|
|
|
8
8
|
from reflex.components.el.elements.typography import Div
|
|
9
9
|
from reflex.event import EventHandler, EventSpec
|
|
10
|
-
from reflex.ivars.base import ImmutableVar
|
|
11
10
|
from reflex.style import Style
|
|
12
|
-
from reflex.vars import Var
|
|
11
|
+
from reflex.vars.base import Var
|
|
13
12
|
|
|
14
13
|
class Html(Div):
|
|
15
14
|
@overload
|
|
@@ -18,82 +17,72 @@ class Html(Div):
|
|
|
18
17
|
cls,
|
|
19
18
|
*children,
|
|
20
19
|
dangerouslySetInnerHTML: Optional[
|
|
21
|
-
Union[
|
|
20
|
+
Union[Dict[str, str], Var[Dict[str, str]]]
|
|
22
21
|
] = None,
|
|
23
|
-
access_key: Optional[Union[Var[Union[bool, int, str]],
|
|
22
|
+
access_key: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
|
|
24
23
|
auto_capitalize: Optional[
|
|
25
|
-
Union[Var[Union[bool, int, str]],
|
|
24
|
+
Union[Var[Union[bool, int, str]], bool, int, str]
|
|
26
25
|
] = None,
|
|
27
26
|
content_editable: Optional[
|
|
28
|
-
Union[Var[Union[bool, int, str]],
|
|
27
|
+
Union[Var[Union[bool, int, str]], bool, int, str]
|
|
29
28
|
] = None,
|
|
30
29
|
context_menu: Optional[
|
|
31
|
-
Union[Var[Union[bool, int, str]],
|
|
30
|
+
Union[Var[Union[bool, int, str]], bool, int, str]
|
|
32
31
|
] = None,
|
|
33
|
-
dir: Optional[Union[Var[Union[bool, int, str]],
|
|
34
|
-
draggable: Optional[Union[Var[Union[bool, int, str]],
|
|
32
|
+
dir: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
|
|
33
|
+
draggable: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
|
|
35
34
|
enter_key_hint: Optional[
|
|
36
|
-
Union[Var[Union[bool, int, str]],
|
|
37
|
-
] = None,
|
|
38
|
-
hidden: Optional[Union[Var[Union[bool, int, str]],
|
|
39
|
-
input_mode: Optional[Union[Var[Union[bool, int, str]],
|
|
40
|
-
item_prop: Optional[Union[Var[Union[bool, int, str]],
|
|
41
|
-
lang: Optional[Union[Var[Union[bool, int, str]],
|
|
42
|
-
role: Optional[Union[Var[Union[bool, int, str]],
|
|
43
|
-
slot: Optional[Union[Var[Union[bool, int, str]],
|
|
44
|
-
spell_check: Optional[Union[Var[Union[bool, int, str]],
|
|
45
|
-
tab_index: Optional[Union[Var[Union[bool, int, str]],
|
|
46
|
-
title: Optional[Union[Var[Union[bool, int, str]],
|
|
35
|
+
Union[Var[Union[bool, int, str]], bool, int, str]
|
|
36
|
+
] = None,
|
|
37
|
+
hidden: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
|
|
38
|
+
input_mode: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
|
|
39
|
+
item_prop: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
|
|
40
|
+
lang: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
|
|
41
|
+
role: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
|
|
42
|
+
slot: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
|
|
43
|
+
spell_check: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
|
|
44
|
+
tab_index: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
|
|
45
|
+
title: Optional[Union[Var[Union[bool, int, str]], bool, int, str]] = None,
|
|
47
46
|
style: Optional[Style] = None,
|
|
48
47
|
key: Optional[Any] = None,
|
|
49
48
|
id: Optional[Any] = None,
|
|
50
49
|
class_name: Optional[Any] = None,
|
|
51
50
|
autofocus: Optional[bool] = None,
|
|
52
|
-
custom_attrs: Optional[Dict[str, Union[
|
|
53
|
-
on_blur: Optional[
|
|
54
|
-
|
|
55
|
-
] = None,
|
|
56
|
-
on_click: Optional[
|
|
57
|
-
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
58
|
-
] = None,
|
|
51
|
+
custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
|
|
52
|
+
on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
53
|
+
on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
59
54
|
on_context_menu: Optional[
|
|
60
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
55
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
61
56
|
] = None,
|
|
62
57
|
on_double_click: Optional[
|
|
63
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
64
|
-
] = None,
|
|
65
|
-
on_focus: Optional[
|
|
66
|
-
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
67
|
-
] = None,
|
|
68
|
-
on_mount: Optional[
|
|
69
|
-
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
58
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
70
59
|
] = None,
|
|
60
|
+
on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
61
|
+
on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
71
62
|
on_mouse_down: Optional[
|
|
72
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
63
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
73
64
|
] = None,
|
|
74
65
|
on_mouse_enter: Optional[
|
|
75
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
66
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
76
67
|
] = None,
|
|
77
68
|
on_mouse_leave: Optional[
|
|
78
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
69
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
79
70
|
] = None,
|
|
80
71
|
on_mouse_move: Optional[
|
|
81
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
72
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
82
73
|
] = None,
|
|
83
74
|
on_mouse_out: Optional[
|
|
84
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
75
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
85
76
|
] = None,
|
|
86
77
|
on_mouse_over: Optional[
|
|
87
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
78
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
88
79
|
] = None,
|
|
89
80
|
on_mouse_up: Optional[
|
|
90
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
91
|
-
] = None,
|
|
92
|
-
on_scroll: Optional[
|
|
93
|
-
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
81
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
94
82
|
] = None,
|
|
83
|
+
on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
95
84
|
on_unmount: Optional[
|
|
96
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
85
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
97
86
|
] = None,
|
|
98
87
|
**props,
|
|
99
88
|
) -> "Html":
|
reflex/components/core/match.py
CHANGED
|
@@ -6,12 +6,12 @@ from typing import Any, Dict, List, Optional, Tuple, Union
|
|
|
6
6
|
from reflex.components.base import Fragment
|
|
7
7
|
from reflex.components.component import BaseComponent, Component, MemoizationLeaf
|
|
8
8
|
from reflex.components.tags import MatchTag, Tag
|
|
9
|
-
from reflex.ivars.base import ImmutableVar, LiteralVar
|
|
10
9
|
from reflex.style import Style
|
|
11
10
|
from reflex.utils import format, types
|
|
12
11
|
from reflex.utils.exceptions import MatchTypeError
|
|
13
12
|
from reflex.utils.imports import ImportDict
|
|
14
|
-
from reflex.vars import
|
|
13
|
+
from reflex.vars import VarData
|
|
14
|
+
from reflex.vars.base import LiteralVar, Var
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class Match(MemoizationLeaf):
|
|
@@ -27,7 +27,7 @@ class Match(MemoizationLeaf):
|
|
|
27
27
|
default: Any
|
|
28
28
|
|
|
29
29
|
@classmethod
|
|
30
|
-
def create(cls, cond: Any, *cases) -> Union[Component,
|
|
30
|
+
def create(cls, cond: Any, *cases) -> Union[Component, Var]:
|
|
31
31
|
"""Create a Match Component.
|
|
32
32
|
|
|
33
33
|
Args:
|
|
@@ -56,7 +56,7 @@ class Match(MemoizationLeaf):
|
|
|
56
56
|
)
|
|
57
57
|
|
|
58
58
|
@classmethod
|
|
59
|
-
def _create_condition_var(cls, cond: Any) ->
|
|
59
|
+
def _create_condition_var(cls, cond: Any) -> Var:
|
|
60
60
|
"""Convert the condition to a Var.
|
|
61
61
|
|
|
62
62
|
Args:
|
|
@@ -77,7 +77,7 @@ class Match(MemoizationLeaf):
|
|
|
77
77
|
@classmethod
|
|
78
78
|
def _process_cases(
|
|
79
79
|
cls, cases: List
|
|
80
|
-
) -> Tuple[List, Optional[Union[
|
|
80
|
+
) -> Tuple[List, Optional[Union[Var, BaseComponent]]]:
|
|
81
81
|
"""Process the list of match cases and the catchall default case.
|
|
82
82
|
|
|
83
83
|
Args:
|
|
@@ -125,7 +125,7 @@ class Match(MemoizationLeaf):
|
|
|
125
125
|
return case_element
|
|
126
126
|
|
|
127
127
|
@classmethod
|
|
128
|
-
def _process_match_cases(cls, cases: List) -> List[List[
|
|
128
|
+
def _process_match_cases(cls, cases: List) -> List[List[Var]]:
|
|
129
129
|
"""Process the individual match cases.
|
|
130
130
|
|
|
131
131
|
Args:
|
|
@@ -157,7 +157,7 @@ class Match(MemoizationLeaf):
|
|
|
157
157
|
if not isinstance(element, BaseComponent)
|
|
158
158
|
else element
|
|
159
159
|
)
|
|
160
|
-
if not isinstance(el, (
|
|
160
|
+
if not isinstance(el, (Var, BaseComponent)):
|
|
161
161
|
raise ValueError("Case element must be a var or component")
|
|
162
162
|
case_list.append(el)
|
|
163
163
|
|
|
@@ -166,7 +166,7 @@ class Match(MemoizationLeaf):
|
|
|
166
166
|
return match_cases
|
|
167
167
|
|
|
168
168
|
@classmethod
|
|
169
|
-
def _validate_return_types(cls, match_cases: List[List[
|
|
169
|
+
def _validate_return_types(cls, match_cases: List[List[Var]]) -> None:
|
|
170
170
|
"""Validate that match cases have the same return types.
|
|
171
171
|
|
|
172
172
|
Args:
|
|
@@ -180,24 +180,24 @@ class Match(MemoizationLeaf):
|
|
|
180
180
|
|
|
181
181
|
if types._isinstance(first_case_return, BaseComponent):
|
|
182
182
|
return_type = BaseComponent
|
|
183
|
-
elif types._isinstance(first_case_return,
|
|
184
|
-
return_type =
|
|
183
|
+
elif types._isinstance(first_case_return, Var):
|
|
184
|
+
return_type = Var
|
|
185
185
|
|
|
186
186
|
for index, case in enumerate(match_cases):
|
|
187
187
|
if not types._issubclass(type(case[-1]), return_type):
|
|
188
188
|
raise MatchTypeError(
|
|
189
189
|
f"Match cases should have the same return types. Case {index} with return "
|
|
190
|
-
f"value `{case[-1].
|
|
190
|
+
f"value `{case[-1]._js_expr if isinstance(case[-1], Var) else textwrap.shorten(str(case[-1]), width=250)}`"
|
|
191
191
|
f" of type {type(case[-1])!r} is not {return_type}"
|
|
192
192
|
)
|
|
193
193
|
|
|
194
194
|
@classmethod
|
|
195
195
|
def _create_match_cond_var_or_component(
|
|
196
196
|
cls,
|
|
197
|
-
match_cond_var:
|
|
198
|
-
match_cases: List[List[
|
|
199
|
-
default: Optional[Union[
|
|
200
|
-
) -> Union[Component,
|
|
197
|
+
match_cond_var: Var,
|
|
198
|
+
match_cases: List[List[Var]],
|
|
199
|
+
default: Optional[Union[Var, BaseComponent]],
|
|
200
|
+
) -> Union[Component, Var]:
|
|
201
201
|
"""Create and return the match condition var or component.
|
|
202
202
|
|
|
203
203
|
Args:
|
|
@@ -232,8 +232,8 @@ class Match(MemoizationLeaf):
|
|
|
232
232
|
) or not types._isinstance(default, Var):
|
|
233
233
|
raise ValueError("Return types of match cases should be Vars.")
|
|
234
234
|
|
|
235
|
-
return
|
|
236
|
-
|
|
235
|
+
return Var(
|
|
236
|
+
_js_expr=format.format_match(
|
|
237
237
|
cond=str(match_cond_var),
|
|
238
238
|
match_cases=match_cases,
|
|
239
239
|
default=default, # type: ignore
|
reflex/components/core/upload.py
CHANGED
|
@@ -19,10 +19,10 @@ from reflex.event import (
|
|
|
19
19
|
call_script,
|
|
20
20
|
parse_args_spec,
|
|
21
21
|
)
|
|
22
|
-
from reflex.ivars.base import ImmutableCallableVar, ImmutableVar, LiteralVar
|
|
23
|
-
from reflex.ivars.sequence import LiteralStringVar
|
|
24
22
|
from reflex.utils.imports import ImportVar
|
|
25
|
-
from reflex.vars import
|
|
23
|
+
from reflex.vars import VarData
|
|
24
|
+
from reflex.vars.base import CallableVar, LiteralVar, Var
|
|
25
|
+
from reflex.vars.sequence import LiteralStringVar
|
|
26
26
|
|
|
27
27
|
DEFAULT_UPLOAD_ID: str = "default"
|
|
28
28
|
|
|
@@ -37,8 +37,8 @@ upload_files_context_var_data: VarData = VarData(
|
|
|
37
37
|
)
|
|
38
38
|
|
|
39
39
|
|
|
40
|
-
@
|
|
41
|
-
def upload_file(id_: str = DEFAULT_UPLOAD_ID) ->
|
|
40
|
+
@CallableVar
|
|
41
|
+
def upload_file(id_: str = DEFAULT_UPLOAD_ID) -> Var:
|
|
42
42
|
"""Get the file upload drop trigger.
|
|
43
43
|
|
|
44
44
|
This var is passed to the dropzone component to update the file list when a
|
|
@@ -58,8 +58,8 @@ def upload_file(id_: str = DEFAULT_UPLOAD_ID) -> ImmutableVar:
|
|
|
58
58
|
}})
|
|
59
59
|
"""
|
|
60
60
|
|
|
61
|
-
return
|
|
62
|
-
|
|
61
|
+
return Var(
|
|
62
|
+
_js_expr=var_name,
|
|
63
63
|
_var_type=EventChain,
|
|
64
64
|
_var_data=VarData.merge(
|
|
65
65
|
upload_files_context_var_data, id_var._get_all_var_data()
|
|
@@ -67,8 +67,8 @@ def upload_file(id_: str = DEFAULT_UPLOAD_ID) -> ImmutableVar:
|
|
|
67
67
|
)
|
|
68
68
|
|
|
69
69
|
|
|
70
|
-
@
|
|
71
|
-
def selected_files(id_: str = DEFAULT_UPLOAD_ID) ->
|
|
70
|
+
@CallableVar
|
|
71
|
+
def selected_files(id_: str = DEFAULT_UPLOAD_ID) -> Var:
|
|
72
72
|
"""Get the list of selected files.
|
|
73
73
|
|
|
74
74
|
Args:
|
|
@@ -78,8 +78,8 @@ def selected_files(id_: str = DEFAULT_UPLOAD_ID) -> ImmutableVar:
|
|
|
78
78
|
A var referencing the list of selected file paths.
|
|
79
79
|
"""
|
|
80
80
|
id_var = LiteralStringVar.create(id_)
|
|
81
|
-
return
|
|
82
|
-
|
|
81
|
+
return Var(
|
|
82
|
+
_js_expr=f"(filesById[{str(id_var)}] ? filesById[{str(id_var)}].map((f) => (f.path || f.name)) : [])",
|
|
83
83
|
_var_type=List[str],
|
|
84
84
|
_var_data=VarData.merge(
|
|
85
85
|
upload_files_context_var_data, id_var._get_all_var_data()
|
|
@@ -132,8 +132,8 @@ def get_upload_dir() -> Path:
|
|
|
132
132
|
return uploaded_files_dir
|
|
133
133
|
|
|
134
134
|
|
|
135
|
-
uploaded_files_url_prefix =
|
|
136
|
-
|
|
135
|
+
uploaded_files_url_prefix = Var(
|
|
136
|
+
_js_expr="getBackendURL(env.UPLOAD)",
|
|
137
137
|
_var_data=VarData(
|
|
138
138
|
imports={
|
|
139
139
|
f"/{Dirs.STATE_PATH}": "getBackendURL",
|
|
@@ -247,9 +247,7 @@ class Upload(MemoizationLeaf):
|
|
|
247
247
|
}
|
|
248
248
|
# The file input to use.
|
|
249
249
|
upload = Input.create(type="file")
|
|
250
|
-
upload.special_props = {
|
|
251
|
-
ImmutableVar(_var_name="{...getInputProps()}", _var_type=None)
|
|
252
|
-
}
|
|
250
|
+
upload.special_props = [Var(_js_expr="{...getInputProps()}", _var_type=None)]
|
|
253
251
|
|
|
254
252
|
# The dropzone to use.
|
|
255
253
|
zone = Box.create(
|
|
@@ -257,9 +255,7 @@ class Upload(MemoizationLeaf):
|
|
|
257
255
|
*children,
|
|
258
256
|
**{k: v for k, v in props.items() if k not in supported_props},
|
|
259
257
|
)
|
|
260
|
-
zone.special_props = {
|
|
261
|
-
ImmutableVar(_var_name="{...getRootProps()}", _var_type=None)
|
|
262
|
-
}
|
|
258
|
+
zone.special_props = [Var(_js_expr="{...getRootProps()}", _var_type=None)]
|
|
263
259
|
|
|
264
260
|
# Create the component.
|
|
265
261
|
upload_props["id"] = props.get("id", DEFAULT_UPLOAD_ID)
|
|
@@ -287,9 +283,7 @@ class Upload(MemoizationLeaf):
|
|
|
287
283
|
)
|
|
288
284
|
|
|
289
285
|
@classmethod
|
|
290
|
-
def _update_arg_tuple_for_on_drop(
|
|
291
|
-
cls, arg_value: tuple[ImmutableVar, ImmutableVar]
|
|
292
|
-
):
|
|
286
|
+
def _update_arg_tuple_for_on_drop(cls, arg_value: tuple[Var, Var]):
|
|
293
287
|
"""Helper to update caller-provided EventSpec args for direct use with on_drop.
|
|
294
288
|
|
|
295
289
|
Args:
|
|
@@ -298,7 +292,7 @@ class Upload(MemoizationLeaf):
|
|
|
298
292
|
Returns:
|
|
299
293
|
The updated arg_value tuple when arg is "files", otherwise the original arg_value.
|
|
300
294
|
"""
|
|
301
|
-
if arg_value[0].
|
|
295
|
+
if arg_value[0]._js_expr == "files":
|
|
302
296
|
placeholder = parse_args_spec(_on_drop_spec)[0]
|
|
303
297
|
return (arg_value[0], placeholder)
|
|
304
298
|
return arg_value
|