reflex 0.5.10a3__py3-none-any.whl → 0.6.0a1__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/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/__init__.py +3 -2
- reflex/__init__.pyi +2 -2
- reflex/app.py +43 -9
- reflex/base.py +3 -2
- reflex/compiler/compiler.py +6 -6
- reflex/compiler/utils.py +5 -3
- reflex/components/base/app_wrap.py +2 -4
- reflex/components/base/app_wrap.pyi +17 -17
- reflex/components/base/bare.py +7 -4
- reflex/components/base/body.pyi +17 -17
- reflex/components/base/document.pyi +81 -81
- reflex/components/base/error_boundary.py +10 -8
- reflex/components/base/error_boundary.pyi +20 -19
- reflex/components/base/fragment.pyi +17 -17
- reflex/components/base/head.pyi +33 -33
- reflex/components/base/link.pyi +34 -33
- reflex/components/base/meta.pyi +65 -65
- reflex/components/base/script.py +2 -1
- reflex/components/base/script.pyi +21 -20
- reflex/components/component.py +116 -145
- reflex/components/core/banner.py +59 -60
- reflex/components/core/banner.pyi +86 -150
- reflex/components/core/client_side_routing.py +2 -1
- reflex/components/core/client_side_routing.pyi +34 -33
- reflex/components/core/clipboard.py +2 -2
- reflex/components/core/clipboard.pyi +19 -18
- reflex/components/core/cond.py +21 -44
- reflex/components/core/debounce.py +6 -8
- reflex/components/core/debounce.pyi +19 -18
- reflex/components/core/foreach.py +5 -14
- reflex/components/core/html.pyi +18 -17
- reflex/components/core/match.py +36 -43
- reflex/components/core/upload.py +32 -25
- reflex/components/core/upload.pyi +84 -73
- reflex/components/datadisplay/code.py +55 -28
- reflex/components/datadisplay/code.pyi +20 -17
- reflex/components/datadisplay/dataeditor.py +17 -11
- reflex/components/datadisplay/dataeditor.pyi +34 -33
- reflex/components/el/__init__.py +0 -1
- reflex/components/el/__init__.pyi +0 -11
- reflex/components/el/element.pyi +17 -17
- reflex/components/el/elements/__init__.py +1 -7
- reflex/components/el/elements/__init__.pyi +1 -15
- reflex/components/el/elements/base.pyi +18 -17
- reflex/components/el/elements/forms.py +24 -31
- reflex/components/el/elements/forms.pyi +237 -236
- reflex/components/el/elements/inline.pyi +450 -449
- reflex/components/el/elements/media.py +0 -21
- reflex/components/el/elements/media.pyi +338 -337
- reflex/components/el/elements/metadata.py +3 -2
- reflex/components/el/elements/metadata.pyi +98 -97
- reflex/components/el/elements/other.pyi +114 -113
- reflex/components/el/elements/scripts.pyi +50 -49
- reflex/components/el/elements/sectioning.pyi +242 -241
- reflex/components/el/elements/tables.pyi +162 -161
- reflex/components/el/elements/typography.pyi +242 -241
- reflex/components/gridjs/datatable.py +13 -14
- reflex/components/gridjs/datatable.pyi +34 -33
- reflex/components/lucide/icon.py +2 -126
- reflex/components/lucide/icon.pyi +34 -142
- reflex/components/markdown/markdown.py +30 -35
- reflex/components/markdown/markdown.pyi +29 -32
- reflex/components/moment/moment.pyi +19 -18
- reflex/components/next/base.pyi +17 -17
- reflex/components/next/image.py +0 -4
- reflex/components/next/image.pyi +20 -19
- reflex/components/next/link.pyi +18 -17
- reflex/components/next/video.pyi +18 -17
- reflex/components/plotly/plotly.py +16 -28
- reflex/components/plotly/plotly.pyi +36 -35
- reflex/components/props.py +21 -10
- reflex/components/radix/__init__.pyi +1 -1
- reflex/components/radix/primitives/__init__.pyi +0 -1
- reflex/components/radix/primitives/accordion.py +7 -8
- reflex/components/radix/primitives/accordion.pyi +117 -116
- reflex/components/radix/primitives/base.pyi +34 -33
- reflex/components/radix/primitives/drawer.pyi +169 -168
- reflex/components/radix/primitives/form.pyi +168 -167
- reflex/components/radix/primitives/progress.pyi +82 -81
- reflex/components/radix/primitives/slider.pyi +84 -83
- reflex/components/radix/themes/base.py +8 -4
- reflex/components/radix/themes/base.pyi +114 -113
- reflex/components/radix/themes/color_mode.py +12 -21
- reflex/components/radix/themes/color_mode.pyi +67 -67
- reflex/components/radix/themes/components/__init__.pyi +1 -0
- reflex/components/radix/themes/components/alert_dialog.pyi +118 -117
- reflex/components/radix/themes/components/aspect_ratio.pyi +18 -17
- reflex/components/radix/themes/components/avatar.pyi +18 -17
- reflex/components/radix/themes/components/badge.pyi +18 -17
- reflex/components/radix/themes/components/button.pyi +18 -17
- reflex/components/radix/themes/components/callout.pyi +82 -81
- reflex/components/radix/themes/components/card.pyi +18 -17
- reflex/components/radix/themes/components/checkbox.py +2 -3
- reflex/components/radix/themes/components/checkbox.pyi +53 -52
- reflex/components/radix/themes/components/checkbox_cards.pyi +34 -33
- reflex/components/radix/themes/components/checkbox_group.pyi +34 -33
- reflex/components/radix/themes/components/context_menu.pyi +140 -139
- reflex/components/radix/themes/components/data_list.py +5 -0
- reflex/components/radix/themes/components/data_list.pyi +71 -65
- reflex/components/radix/themes/components/dialog.pyi +121 -120
- reflex/components/radix/themes/components/dropdown_menu.pyi +142 -141
- reflex/components/radix/themes/components/hover_card.pyi +68 -67
- reflex/components/radix/themes/components/icon_button.py +2 -1
- reflex/components/radix/themes/components/icon_button.pyi +18 -17
- reflex/components/radix/themes/components/inset.pyi +18 -17
- reflex/components/radix/themes/components/popover.pyi +73 -72
- reflex/components/radix/themes/components/progress.pyi +18 -17
- reflex/components/radix/themes/components/radio.pyi +18 -17
- reflex/components/radix/themes/components/radio_cards.pyi +35 -34
- reflex/components/radix/themes/components/radio_group.py +35 -31
- reflex/components/radix/themes/components/radio_group.pyi +73 -66
- reflex/components/radix/themes/components/scroll_area.pyi +18 -17
- reflex/components/radix/themes/components/segmented_control.pyi +35 -34
- reflex/components/radix/themes/components/select.py +2 -1
- reflex/components/radix/themes/components/select.pyi +155 -154
- reflex/components/radix/themes/components/separator.py +2 -3
- reflex/components/radix/themes/components/separator.pyi +18 -17
- reflex/components/radix/themes/components/skeleton.pyi +18 -17
- reflex/components/radix/themes/components/slider.py +2 -1
- reflex/components/radix/themes/components/slider.pyi +20 -19
- reflex/components/radix/themes/components/spinner.pyi +18 -17
- reflex/components/radix/themes/components/switch.pyi +19 -18
- reflex/components/radix/themes/components/table.pyi +114 -113
- reflex/components/radix/themes/components/tabs.pyi +84 -83
- reflex/components/radix/themes/components/text_area.pyi +21 -20
- reflex/components/radix/themes/components/text_field.py +0 -79
- reflex/components/radix/themes/components/text_field.pyi +57 -63
- reflex/components/radix/themes/components/tooltip.pyi +21 -20
- reflex/components/radix/themes/layout/base.pyi +18 -17
- reflex/components/radix/themes/layout/box.pyi +18 -17
- reflex/components/radix/themes/layout/center.pyi +18 -17
- reflex/components/radix/themes/layout/container.py +2 -3
- reflex/components/radix/themes/layout/container.pyi +18 -17
- reflex/components/radix/themes/layout/flex.pyi +18 -17
- reflex/components/radix/themes/layout/grid.pyi +18 -17
- reflex/components/radix/themes/layout/list.py +5 -4
- reflex/components/radix/themes/layout/list.pyi +86 -85
- reflex/components/radix/themes/layout/section.py +2 -3
- reflex/components/radix/themes/layout/section.pyi +18 -17
- reflex/components/radix/themes/layout/spacer.pyi +18 -17
- reflex/components/radix/themes/layout/stack.pyi +50 -49
- reflex/components/radix/themes/typography/blockquote.pyi +18 -17
- reflex/components/radix/themes/typography/code.pyi +18 -17
- reflex/components/radix/themes/typography/heading.pyi +18 -17
- reflex/components/radix/themes/typography/link.pyi +18 -17
- reflex/components/radix/themes/typography/text.pyi +114 -113
- reflex/components/react_player/audio.pyi +34 -33
- reflex/components/react_player/react_player.pyi +34 -33
- reflex/components/react_player/video.pyi +34 -33
- reflex/components/recharts/cartesian.py +23 -19
- reflex/components/recharts/cartesian.pyi +297 -296
- reflex/components/recharts/charts.py +6 -5
- reflex/components/recharts/charts.pyi +179 -178
- reflex/components/recharts/general.py +8 -7
- reflex/components/recharts/general.pyi +82 -81
- reflex/components/recharts/polar.py +14 -13
- reflex/components/recharts/polar.pyi +76 -75
- reflex/components/recharts/recharts.pyi +33 -33
- reflex/components/sonner/toast.py +30 -33
- reflex/components/sonner/toast.pyi +27 -25
- reflex/components/suneditor/editor.py +2 -1
- reflex/components/suneditor/editor.pyi +27 -26
- reflex/components/tags/iter_tag.py +16 -16
- reflex/components/tags/tag.py +8 -10
- reflex/constants/base.py +3 -1
- reflex/constants/event.py +1 -0
- reflex/event.py +89 -79
- reflex/experimental/__init__.py +25 -6
- reflex/experimental/client_state.py +34 -58
- reflex/experimental/hooks.py +13 -18
- reflex/experimental/layout.py +5 -5
- reflex/experimental/layout.pyi +84 -83
- reflex/{experimental/vars → ivars}/__init__.py +0 -1
- reflex/ivars/base.py +2180 -0
- reflex/ivars/function.py +200 -0
- reflex/ivars/number.py +1137 -0
- reflex/ivars/object.py +564 -0
- reflex/ivars/sequence.py +1601 -0
- reflex/model.py +22 -0
- reflex/reflex.py +4 -0
- reflex/state.py +388 -73
- reflex/style.py +52 -34
- reflex/testing.py +8 -3
- reflex/utils/exceptions.py +12 -0
- reflex/utils/exec.py +0 -14
- reflex/utils/format.py +74 -223
- reflex/utils/net.py +43 -0
- reflex/utils/path_ops.py +13 -1
- reflex/utils/prerequisites.py +46 -26
- reflex/utils/pyi_generator.py +5 -4
- reflex/utils/serializers.py +13 -31
- reflex/utils/types.py +44 -9
- reflex/vars.py +127 -2230
- {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/METADATA +4 -6
- reflex-0.6.0a1.dist-info/RECORD +384 -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/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.pyi +0 -218
- reflex-0.5.10a3.dist-info/RECORD +0 -413
- {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/LICENSE +0 -0
- {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/WHEEL +0 -0
- {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/entry_points.txt +0 -0
reflex/components/next/video.pyi
CHANGED
|
@@ -7,8 +7,9 @@ from typing import Any, Callable, Dict, Optional, 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
|
|
10
11
|
from reflex.style import Style
|
|
11
|
-
from reflex.vars import
|
|
12
|
+
from reflex.vars import Var
|
|
12
13
|
|
|
13
14
|
from .base import NextComponent
|
|
14
15
|
|
|
@@ -25,51 +26,51 @@ class Video(NextComponent):
|
|
|
25
26
|
id: Optional[Any] = None,
|
|
26
27
|
class_name: Optional[Any] = None,
|
|
27
28
|
autofocus: Optional[bool] = None,
|
|
28
|
-
custom_attrs: Optional[Dict[str, Union[
|
|
29
|
+
custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
|
|
29
30
|
on_blur: Optional[
|
|
30
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
31
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
31
32
|
] = None,
|
|
32
33
|
on_click: Optional[
|
|
33
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
34
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
34
35
|
] = None,
|
|
35
36
|
on_context_menu: Optional[
|
|
36
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
37
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
37
38
|
] = None,
|
|
38
39
|
on_double_click: Optional[
|
|
39
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
40
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
40
41
|
] = None,
|
|
41
42
|
on_focus: Optional[
|
|
42
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
43
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
43
44
|
] = None,
|
|
44
45
|
on_mount: Optional[
|
|
45
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
46
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
46
47
|
] = None,
|
|
47
48
|
on_mouse_down: Optional[
|
|
48
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
49
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
49
50
|
] = None,
|
|
50
51
|
on_mouse_enter: Optional[
|
|
51
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
52
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
52
53
|
] = None,
|
|
53
54
|
on_mouse_leave: Optional[
|
|
54
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
55
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
55
56
|
] = None,
|
|
56
57
|
on_mouse_move: Optional[
|
|
57
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
58
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
58
59
|
] = None,
|
|
59
60
|
on_mouse_out: Optional[
|
|
60
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
61
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
61
62
|
] = None,
|
|
62
63
|
on_mouse_over: Optional[
|
|
63
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
64
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
64
65
|
] = None,
|
|
65
66
|
on_mouse_up: Optional[
|
|
66
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
67
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
67
68
|
] = None,
|
|
68
69
|
on_scroll: Optional[
|
|
69
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
70
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
70
71
|
] = None,
|
|
71
72
|
on_unmount: Optional[
|
|
72
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
73
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
73
74
|
] = None,
|
|
74
75
|
**props,
|
|
75
76
|
) -> "Video":
|
|
@@ -8,6 +8,7 @@ from reflex.base import Base
|
|
|
8
8
|
from reflex.components.component import Component, NoSSRComponent
|
|
9
9
|
from reflex.components.core.cond import color_mode_cond
|
|
10
10
|
from reflex.event import EventHandler
|
|
11
|
+
from reflex.ivars.base import ImmutableVar, LiteralVar
|
|
11
12
|
from reflex.utils import console
|
|
12
13
|
from reflex.vars import Var
|
|
13
14
|
|
|
@@ -30,7 +31,7 @@ def _event_data_signature(e0: Var) -> List[Any]:
|
|
|
30
31
|
Returns:
|
|
31
32
|
The event key extracted from the event data (if defined).
|
|
32
33
|
"""
|
|
33
|
-
return [
|
|
34
|
+
return [ImmutableVar.create_safe(f"{e0}?.event")]
|
|
34
35
|
|
|
35
36
|
|
|
36
37
|
def _event_points_data_signature(e0: Var) -> List[Any]:
|
|
@@ -43,11 +44,8 @@ def _event_points_data_signature(e0: Var) -> List[Any]:
|
|
|
43
44
|
The event data and the extracted points.
|
|
44
45
|
"""
|
|
45
46
|
return [
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
f"extractPoints({e0}?.points)",
|
|
49
|
-
_var_is_string=False,
|
|
50
|
-
),
|
|
47
|
+
ImmutableVar.create_safe(f"{e0}?.event"),
|
|
48
|
+
ImmutableVar.create_safe(f"extractPoints({e0}?.points)"),
|
|
51
49
|
]
|
|
52
50
|
|
|
53
51
|
|
|
@@ -116,7 +114,7 @@ class Plotly(NoSSRComponent):
|
|
|
116
114
|
config: Var[Dict]
|
|
117
115
|
|
|
118
116
|
# If true, the graph will resize when the window is resized.
|
|
119
|
-
use_resize_handler: Var[bool] =
|
|
117
|
+
use_resize_handler: Var[bool] = LiteralVar.create(True)
|
|
120
118
|
|
|
121
119
|
# Fired after the plot is redrawn.
|
|
122
120
|
on_after_plot: EventHandler[_passthrough_signature]
|
|
@@ -242,10 +240,10 @@ const extractPoints = (points) => {
|
|
|
242
240
|
from plotly.io import templates
|
|
243
241
|
|
|
244
242
|
responsive_template = color_mode_cond(
|
|
245
|
-
light=
|
|
246
|
-
dark=
|
|
243
|
+
light=LiteralVar.create(templates["plotly"]),
|
|
244
|
+
dark=LiteralVar.create(templates["plotly_dark"]),
|
|
247
245
|
)
|
|
248
|
-
if isinstance(responsive_template,
|
|
246
|
+
if isinstance(responsive_template, ImmutableVar):
|
|
249
247
|
# Mark the conditional Var as a Template to avoid type mismatch
|
|
250
248
|
responsive_template = responsive_template.to(Template)
|
|
251
249
|
props.setdefault("template", responsive_template)
|
|
@@ -257,36 +255,26 @@ const extractPoints = (points) => {
|
|
|
257
255
|
|
|
258
256
|
def _render(self):
|
|
259
257
|
tag = super()._render()
|
|
260
|
-
figure = self.data.to(dict)
|
|
258
|
+
figure = self.data.upcast().to(dict)
|
|
261
259
|
merge_dicts = [] # Data will be merged and spread from these dict Vars
|
|
262
260
|
if self.layout is not None:
|
|
263
261
|
# Why is this not a literal dict? Great question... it didn't work
|
|
264
262
|
# reliably because of how _var_name_unwrapped strips the outer curly
|
|
265
263
|
# brackets if any of the contained Vars depend on state.
|
|
266
|
-
layout_dict =
|
|
267
|
-
f"{{'layout': {self.layout.to(dict)._var_name_unwrapped}}}"
|
|
268
|
-
).to(dict)
|
|
264
|
+
layout_dict = LiteralVar.create({"layout": self.layout})
|
|
269
265
|
merge_dicts.append(layout_dict)
|
|
270
266
|
if self.template is not None:
|
|
271
|
-
template_dict =
|
|
272
|
-
|
|
273
|
-
)
|
|
274
|
-
template_dict._var_data = None # To avoid stripping outer curly brackets
|
|
275
|
-
merge_dicts.append(template_dict)
|
|
267
|
+
template_dict = LiteralVar.create({"layout": {"template": self.template}})
|
|
268
|
+
merge_dicts.append(template_dict.without_data())
|
|
276
269
|
if merge_dicts:
|
|
277
270
|
tag.special_props.add(
|
|
278
271
|
# Merge all dictionaries and spread the result over props.
|
|
279
|
-
|
|
280
|
-
f"{{...mergician({figure
|
|
281
|
-
f"{','.join(md
|
|
282
|
-
_var_is_string=False,
|
|
272
|
+
ImmutableVar.create_safe(
|
|
273
|
+
f"{{...mergician({str(figure)},"
|
|
274
|
+
f"{','.join(str(md) for md in merge_dicts)})}}",
|
|
283
275
|
),
|
|
284
276
|
)
|
|
285
277
|
else:
|
|
286
278
|
# Spread the figure dict over props, nothing to merge.
|
|
287
|
-
tag.special_props.add(
|
|
288
|
-
Var.create_safe(
|
|
289
|
-
f"{{...{figure._var_name_unwrapped}}}", _var_is_string=False
|
|
290
|
-
)
|
|
291
|
-
)
|
|
279
|
+
tag.special_props.add(ImmutableVar.create_safe(f"{{...{str(figure)}}}"))
|
|
292
280
|
return tag
|
|
@@ -8,9 +8,10 @@ from typing import Any, Callable, Dict, Optional, Union, overload
|
|
|
8
8
|
from reflex.base import Base
|
|
9
9
|
from reflex.components.component import NoSSRComponent
|
|
10
10
|
from reflex.event import EventHandler, EventSpec
|
|
11
|
+
from reflex.ivars.base import ImmutableVar
|
|
11
12
|
from reflex.style import Style
|
|
12
13
|
from reflex.utils import console
|
|
13
|
-
from reflex.vars import
|
|
14
|
+
from reflex.vars import Var
|
|
14
15
|
|
|
15
16
|
try:
|
|
16
17
|
from plotly.graph_objects import Figure, layout
|
|
@@ -44,105 +45,105 @@ class Plotly(NoSSRComponent):
|
|
|
44
45
|
id: Optional[Any] = None,
|
|
45
46
|
class_name: Optional[Any] = None,
|
|
46
47
|
autofocus: Optional[bool] = None,
|
|
47
|
-
custom_attrs: Optional[Dict[str, Union[
|
|
48
|
+
custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
|
|
48
49
|
on_after_plot: Optional[
|
|
49
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
50
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
50
51
|
] = None,
|
|
51
52
|
on_animated: Optional[
|
|
52
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
53
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
53
54
|
] = None,
|
|
54
55
|
on_animating_frame: Optional[
|
|
55
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
56
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
56
57
|
] = None,
|
|
57
58
|
on_animation_interrupted: Optional[
|
|
58
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
59
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
59
60
|
] = None,
|
|
60
61
|
on_autosize: Optional[
|
|
61
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
62
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
62
63
|
] = None,
|
|
63
64
|
on_before_hover: Optional[
|
|
64
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
65
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
65
66
|
] = None,
|
|
66
67
|
on_blur: Optional[
|
|
67
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
68
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
68
69
|
] = None,
|
|
69
70
|
on_button_clicked: Optional[
|
|
70
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
71
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
71
72
|
] = None,
|
|
72
73
|
on_click: Optional[
|
|
73
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
74
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
74
75
|
] = None,
|
|
75
76
|
on_context_menu: Optional[
|
|
76
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
77
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
77
78
|
] = None,
|
|
78
79
|
on_deselect: Optional[
|
|
79
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
80
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
80
81
|
] = None,
|
|
81
82
|
on_double_click: Optional[
|
|
82
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
83
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
83
84
|
] = None,
|
|
84
85
|
on_focus: Optional[
|
|
85
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
86
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
86
87
|
] = None,
|
|
87
88
|
on_hover: Optional[
|
|
88
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
89
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
89
90
|
] = None,
|
|
90
91
|
on_mount: Optional[
|
|
91
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
92
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
92
93
|
] = None,
|
|
93
94
|
on_mouse_down: Optional[
|
|
94
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
95
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
95
96
|
] = None,
|
|
96
97
|
on_mouse_enter: Optional[
|
|
97
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
98
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
98
99
|
] = None,
|
|
99
100
|
on_mouse_leave: Optional[
|
|
100
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
101
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
101
102
|
] = None,
|
|
102
103
|
on_mouse_move: Optional[
|
|
103
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
104
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
104
105
|
] = None,
|
|
105
106
|
on_mouse_out: Optional[
|
|
106
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
107
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
107
108
|
] = None,
|
|
108
109
|
on_mouse_over: Optional[
|
|
109
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
110
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
110
111
|
] = None,
|
|
111
112
|
on_mouse_up: Optional[
|
|
112
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
113
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
113
114
|
] = None,
|
|
114
115
|
on_redraw: Optional[
|
|
115
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
116
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
116
117
|
] = None,
|
|
117
118
|
on_relayout: Optional[
|
|
118
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
119
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
119
120
|
] = None,
|
|
120
121
|
on_relayouting: Optional[
|
|
121
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
122
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
122
123
|
] = None,
|
|
123
124
|
on_restyle: Optional[
|
|
124
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
125
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
125
126
|
] = None,
|
|
126
127
|
on_scroll: Optional[
|
|
127
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
128
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
128
129
|
] = None,
|
|
129
130
|
on_selected: Optional[
|
|
130
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
131
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
131
132
|
] = None,
|
|
132
133
|
on_selecting: Optional[
|
|
133
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
134
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
134
135
|
] = None,
|
|
135
136
|
on_transition_interrupted: Optional[
|
|
136
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
137
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
137
138
|
] = None,
|
|
138
139
|
on_transitioning: Optional[
|
|
139
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
140
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
140
141
|
] = None,
|
|
141
142
|
on_unhover: Optional[
|
|
142
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
143
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
143
144
|
] = None,
|
|
144
145
|
on_unmount: Optional[
|
|
145
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
146
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
146
147
|
] = None,
|
|
147
148
|
**props,
|
|
148
149
|
) -> "Plotly":
|
reflex/components/props.py
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
from reflex.base import Base
|
|
6
|
+
from reflex.ivars.object import LiteralObjectVar
|
|
6
7
|
from reflex.utils import format
|
|
7
|
-
from reflex.utils.serializers import serialize
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class PropsBase(Base):
|
|
@@ -20,12 +20,23 @@ class PropsBase(Base):
|
|
|
20
20
|
Returns:
|
|
21
21
|
The object as a Javascript Object literal.
|
|
22
22
|
"""
|
|
23
|
-
return
|
|
24
|
-
self.
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
return LiteralObjectVar.create(
|
|
24
|
+
{format.to_camel_case(key): value for key, value in self.dict().items()}
|
|
25
|
+
).json()
|
|
26
|
+
|
|
27
|
+
def dict(self, *args, **kwargs):
|
|
28
|
+
"""Convert the object to a dictionary.
|
|
29
|
+
|
|
30
|
+
Keys will be converted to camelCase.
|
|
31
|
+
|
|
32
|
+
Args:
|
|
33
|
+
*args: Arguments to pass to the parent class.
|
|
34
|
+
**kwargs: Keyword arguments to pass to the parent class.
|
|
35
|
+
|
|
36
|
+
Returns:
|
|
37
|
+
The object as a dictionary.
|
|
38
|
+
"""
|
|
39
|
+
return {
|
|
40
|
+
format.to_camel_case(key): value
|
|
41
|
+
for key, value in super().dict(*args, **kwargs).items()
|
|
42
|
+
}
|
|
@@ -8,7 +8,6 @@ from . import themes as themes
|
|
|
8
8
|
from .primitives.accordion import accordion as accordion
|
|
9
9
|
from .primitives.drawer import drawer as drawer
|
|
10
10
|
from .primitives.form import form as form
|
|
11
|
-
from .primitives.progress import progress as progress
|
|
12
11
|
from .themes.base import theme as theme
|
|
13
12
|
from .themes.base import theme_panel as theme_panel
|
|
14
13
|
from .themes.color_mode import color_mode as color_mode
|
|
@@ -31,6 +30,7 @@ from .themes.components.hover_card import hover_card as hover_card
|
|
|
31
30
|
from .themes.components.icon_button import icon_button as icon_button
|
|
32
31
|
from .themes.components.inset import inset as inset
|
|
33
32
|
from .themes.components.popover import popover as popover
|
|
33
|
+
from .themes.components.progress import progress as progress
|
|
34
34
|
from .themes.components.radio_cards import radio_cards as radio_cards
|
|
35
35
|
from .themes.components.radio_group import radio as radio
|
|
36
36
|
from .themes.components.radio_group import radio_group as radio_group
|
|
@@ -11,6 +11,7 @@ from reflex.components.lucide.icon import Icon
|
|
|
11
11
|
from reflex.components.radix.primitives.base import RadixPrimitiveComponent
|
|
12
12
|
from reflex.components.radix.themes.base import LiteralAccentColor, LiteralRadius
|
|
13
13
|
from reflex.event import EventHandler
|
|
14
|
+
from reflex.ivars.base import ImmutableVar, LiteralVar
|
|
14
15
|
from reflex.style import Style
|
|
15
16
|
from reflex.vars import Var, get_uuid_string_var
|
|
16
17
|
|
|
@@ -102,10 +103,10 @@ class AccordionRoot(AccordionComponent):
|
|
|
102
103
|
radius: Var[LiteralRadius]
|
|
103
104
|
|
|
104
105
|
# The time in milliseconds to animate open and close
|
|
105
|
-
duration: Var[int] =
|
|
106
|
+
duration: Var[int] = LiteralVar.create(DEFAULT_ANIMATION_DURATION)
|
|
106
107
|
|
|
107
108
|
# The easing function to use for the animation.
|
|
108
|
-
easing: Var[str] =
|
|
109
|
+
easing: Var[str] = LiteralVar.create(DEFAULT_ANIMATION_EASING)
|
|
109
110
|
|
|
110
111
|
# Whether to show divider lines between items.
|
|
111
112
|
show_dividers: Var[bool]
|
|
@@ -192,8 +193,8 @@ class AccordionItem(AccordionComponent):
|
|
|
192
193
|
def create(
|
|
193
194
|
cls,
|
|
194
195
|
*children,
|
|
195
|
-
header: Optional[Component |
|
|
196
|
-
content: Optional[Component |
|
|
196
|
+
header: Optional[Component | ImmutableVar] = None,
|
|
197
|
+
content: Optional[Component | ImmutableVar] = None,
|
|
197
198
|
**props,
|
|
198
199
|
) -> Component:
|
|
199
200
|
"""Create an accordion item.
|
|
@@ -464,14 +465,12 @@ to {
|
|
|
464
465
|
Returns:
|
|
465
466
|
The style of the component.
|
|
466
467
|
"""
|
|
467
|
-
slideDown =
|
|
468
|
+
slideDown = LiteralVar.create(
|
|
468
469
|
f"${{slideDown}} var(--animation-duration) var(--animation-easing)",
|
|
469
|
-
_var_is_string=True,
|
|
470
470
|
)
|
|
471
471
|
|
|
472
|
-
slideUp =
|
|
472
|
+
slideUp = LiteralVar.create(
|
|
473
473
|
f"${{slideUp}} var(--animation-duration) var(--animation-easing)",
|
|
474
|
-
_var_is_string=True,
|
|
475
474
|
)
|
|
476
475
|
|
|
477
476
|
return {
|