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
|
@@ -8,11 +8,11 @@ version = "0.0.1"
|
|
|
8
8
|
description = "Reflex custom component {{ module_name }}"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "Apache-2.0" }
|
|
11
|
-
requires-python = ">=3.
|
|
11
|
+
requires-python = ">=3.9"
|
|
12
12
|
authors = [{ name = "", email = "YOUREMAIL@domain.com" }]
|
|
13
13
|
keywords = ["reflex","reflex-custom-components"]
|
|
14
14
|
|
|
15
|
-
dependencies = ["reflex>=
|
|
15
|
+
dependencies = ["reflex>={{ reflex_version }}"]
|
|
16
16
|
|
|
17
17
|
classifiers = ["Development Status :: 4 - Beta"]
|
|
18
18
|
|
|
@@ -27,7 +27,7 @@ function AppWrap({children}) {
|
|
|
27
27
|
|
|
28
28
|
export default function MyApp({ Component, pageProps }) {
|
|
29
29
|
return (
|
|
30
|
-
<ThemeProvider defaultTheme={ defaultColorMode }
|
|
30
|
+
<ThemeProvider defaultTheme={ defaultColorMode } attribute="class">
|
|
31
31
|
<AppWrap>
|
|
32
32
|
<StateProvider>
|
|
33
33
|
<EventLoopProvider>
|
|
@@ -64,11 +64,11 @@
|
|
|
64
64
|
{# Args: #}
|
|
65
65
|
{# component: component dictionary #}
|
|
66
66
|
{% macro render_iterable_tag(component) %}
|
|
67
|
-
{ {%- if component.iterable_type == 'dict' -%}Object.entries({{- component.iterable_state }}){%- else -%}{{- component.iterable_state }}{%- endif -%}.map(({{ component.arg_name }}, {{ component.arg_index }}) => (
|
|
67
|
+
<>{ {%- if component.iterable_type == 'dict' -%}Object.entries({{- component.iterable_state }}){%- else -%}{{- component.iterable_state }}{%- endif -%}.map(({{ component.arg_name }}, {{ component.arg_index }}) => (
|
|
68
68
|
{% for child in component.children %}
|
|
69
69
|
{{ render(child) }}
|
|
70
70
|
{% endfor %}
|
|
71
|
-
))}
|
|
71
|
+
))}</>
|
|
72
72
|
{%- endmacro %}
|
|
73
73
|
|
|
74
74
|
|
|
@@ -85,10 +85,10 @@
|
|
|
85
85
|
{% macro render_match_tag(component) %}
|
|
86
86
|
{
|
|
87
87
|
(() => {
|
|
88
|
-
switch (JSON.stringify({{ component.cond.
|
|
88
|
+
switch (JSON.stringify({{ component.cond._js_expr }})) {
|
|
89
89
|
{% for case in component.match_cases %}
|
|
90
90
|
{% for condition in case[:-1] %}
|
|
91
|
-
case JSON.stringify({{ condition.
|
|
91
|
+
case JSON.stringify({{ condition._js_expr }}):
|
|
92
92
|
{% endfor %}
|
|
93
93
|
return {{ case[-1] }};
|
|
94
94
|
break;
|
|
@@ -7,7 +7,7 @@ export const initialState = {{ initial_state|json_dumps }}
|
|
|
7
7
|
export const initialState = {}
|
|
8
8
|
{% endif %}
|
|
9
9
|
|
|
10
|
-
export const defaultColorMode =
|
|
10
|
+
export const defaultColorMode = {{ default_color_mode }}
|
|
11
11
|
export const ColorModeContext = createContext(null);
|
|
12
12
|
export const UploadFilesContext = createContext(null);
|
|
13
13
|
export const DispatchContext = createContext(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export default {{ theme
|
|
1
|
+
export default {{ theme }}
|
|
@@ -805,7 +805,9 @@ export const useEventLoop = (
|
|
|
805
805
|
* @returns True if the value is truthy, false otherwise.
|
|
806
806
|
*/
|
|
807
807
|
export const isTrue = (val) => {
|
|
808
|
-
|
|
808
|
+
if (Array.isArray(val)) return val.length > 0;
|
|
809
|
+
if (val === Object(val)) return Object.keys(val).length > 0;
|
|
810
|
+
return Boolean(val);
|
|
809
811
|
};
|
|
810
812
|
|
|
811
813
|
/**
|
reflex/__init__.py
CHANGED
|
@@ -140,6 +140,7 @@ RADIX_THEMES_COMPONENTS_MAPPING: dict = {
|
|
|
140
140
|
"components.radix.themes.components.radio_group": ["radio", "radio_group"],
|
|
141
141
|
"components.radix.themes.components.dropdown_menu": ["menu", "dropdown_menu"],
|
|
142
142
|
"components.radix.themes.components.separator": ["divider", "separator"],
|
|
143
|
+
"components.radix.themes.components.progress": ["progress"],
|
|
143
144
|
}
|
|
144
145
|
|
|
145
146
|
RADIX_THEMES_LAYOUT_MAPPING: dict = {
|
|
@@ -205,7 +206,13 @@ RADIX_PRIMITIVES_MAPPING: dict = {
|
|
|
205
206
|
"components.radix.primitives.form": [
|
|
206
207
|
"form",
|
|
207
208
|
],
|
|
208
|
-
"components.radix.primitives.progress": [
|
|
209
|
+
"components.radix.primitives.progress": [
|
|
210
|
+
"progress",
|
|
211
|
+
],
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
RADIX_PRIMITIVES_SHORTCUT_MAPPING: dict = {
|
|
215
|
+
k: v for k, v in RADIX_PRIMITIVES_MAPPING.items() if "progress" not in k
|
|
209
216
|
}
|
|
210
217
|
|
|
211
218
|
COMPONENTS_CORE_MAPPING: dict = {
|
|
@@ -248,7 +255,7 @@ RADIX_MAPPING: dict = {
|
|
|
248
255
|
**RADIX_THEMES_COMPONENTS_MAPPING,
|
|
249
256
|
**RADIX_THEMES_TYPOGRAPHY_MAPPING,
|
|
250
257
|
**RADIX_THEMES_LAYOUT_MAPPING,
|
|
251
|
-
**
|
|
258
|
+
**RADIX_PRIMITIVES_SHORTCUT_MAPPING,
|
|
252
259
|
}
|
|
253
260
|
|
|
254
261
|
_MAPPING: dict = {
|
|
@@ -324,7 +331,7 @@ _MAPPING: dict = {
|
|
|
324
331
|
"style": ["Style", "toggle_color_mode"],
|
|
325
332
|
"utils.imports": ["ImportVar"],
|
|
326
333
|
"utils.serializers": ["serializer"],
|
|
327
|
-
"vars": ["
|
|
334
|
+
"vars": ["Var"],
|
|
328
335
|
}
|
|
329
336
|
|
|
330
337
|
_SUBMODULES: set[str] = {
|
reflex/__init__.pyi
CHANGED
|
@@ -70,7 +70,6 @@ from .components.plotly import plotly as plotly
|
|
|
70
70
|
from .components.radix.primitives.accordion import accordion as accordion
|
|
71
71
|
from .components.radix.primitives.drawer import drawer as drawer
|
|
72
72
|
from .components.radix.primitives.form import form as form
|
|
73
|
-
from .components.radix.primitives.progress import progress as progress
|
|
74
73
|
from .components.radix.themes.base import theme as theme
|
|
75
74
|
from .components.radix.themes.base import theme_panel as theme_panel
|
|
76
75
|
from .components.radix.themes.color_mode import color_mode as color_mode
|
|
@@ -105,6 +104,7 @@ from .components.radix.themes.components.hover_card import hover_card as hover_c
|
|
|
105
104
|
from .components.radix.themes.components.icon_button import icon_button as icon_button
|
|
106
105
|
from .components.radix.themes.components.inset import inset as inset
|
|
107
106
|
from .components.radix.themes.components.popover import popover as popover
|
|
107
|
+
from .components.radix.themes.components.progress import progress as progress
|
|
108
108
|
from .components.radix.themes.components.radio_cards import radio_cards as radio_cards
|
|
109
109
|
from .components.radix.themes.components.radio_group import radio as radio
|
|
110
110
|
from .components.radix.themes.components.radio_group import radio_group as radio_group
|
|
@@ -131,6 +131,7 @@ from .components.radix.themes.layout.container import container as container
|
|
|
131
131
|
from .components.radix.themes.layout.flex import flex as flex
|
|
132
132
|
from .components.radix.themes.layout.grid import grid as grid
|
|
133
133
|
from .components.radix.themes.layout.list import list_item as list_item
|
|
134
|
+
from .components.radix.themes.layout.list import list_ns as list # noqa
|
|
134
135
|
from .components.radix.themes.layout.list import ordered_list as ordered_list
|
|
135
136
|
from .components.radix.themes.layout.list import unordered_list as unordered_list
|
|
136
137
|
from .components.radix.themes.layout.section import section as section
|
|
@@ -189,7 +190,6 @@ from .style import toggle_color_mode as toggle_color_mode
|
|
|
189
190
|
from .utils.imports import ImportVar as ImportVar
|
|
190
191
|
from .utils.serializers import serializer as serializer
|
|
191
192
|
from .vars import Var as Var
|
|
192
|
-
from .vars import cached_var as cached_var
|
|
193
193
|
|
|
194
194
|
del compat
|
|
195
195
|
RADIX_THEMES_MAPPING: dict
|
|
@@ -197,6 +197,7 @@ RADIX_THEMES_COMPONENTS_MAPPING: dict
|
|
|
197
197
|
RADIX_THEMES_LAYOUT_MAPPING: dict
|
|
198
198
|
RADIX_THEMES_TYPOGRAPHY_MAPPING: dict
|
|
199
199
|
RADIX_PRIMITIVES_MAPPING: dict
|
|
200
|
+
RADIX_PRIMITIVES_SHORTCUT_MAPPING: dict
|
|
200
201
|
COMPONENTS_CORE_MAPPING: dict
|
|
201
202
|
COMPONENTS_BASE_MAPPING: dict
|
|
202
203
|
RADIX_MAPPING: dict
|
reflex/app.py
CHANGED
|
@@ -9,6 +9,7 @@ import copy
|
|
|
9
9
|
import functools
|
|
10
10
|
import inspect
|
|
11
11
|
import io
|
|
12
|
+
import json
|
|
12
13
|
import multiprocessing
|
|
13
14
|
import os
|
|
14
15
|
import platform
|
|
@@ -33,7 +34,7 @@ from typing import (
|
|
|
33
34
|
|
|
34
35
|
from fastapi import FastAPI, HTTPException, Request, UploadFile
|
|
35
36
|
from fastapi.middleware import cors
|
|
36
|
-
from fastapi.responses import StreamingResponse
|
|
37
|
+
from fastapi.responses import JSONResponse, StreamingResponse
|
|
37
38
|
from fastapi.staticfiles import StaticFiles
|
|
38
39
|
from rich.progress import MofNCompleteColumn, Progress, TimeElapsedColumn
|
|
39
40
|
from socketio import ASGIApp, AsyncNamespace, AsyncServer
|
|
@@ -65,7 +66,7 @@ from reflex.components.core.upload import Upload, get_upload_dir
|
|
|
65
66
|
from reflex.components.radix import themes
|
|
66
67
|
from reflex.config import get_config
|
|
67
68
|
from reflex.event import Event, EventHandler, EventSpec, window_alert
|
|
68
|
-
from reflex.model import Model
|
|
69
|
+
from reflex.model import Model, get_db_status
|
|
69
70
|
from reflex.page import (
|
|
70
71
|
DECORATED_PAGES,
|
|
71
72
|
)
|
|
@@ -269,13 +270,12 @@ class App(MiddlewareMixin, LifespanMixin, Base):
|
|
|
269
270
|
"`connect_error_component` is deprecated, use `overlay_component` instead"
|
|
270
271
|
)
|
|
271
272
|
super().__init__(**kwargs)
|
|
272
|
-
base_state_subclasses = BaseState.__subclasses__()
|
|
273
273
|
|
|
274
274
|
# Special case to allow test cases have multiple subclasses of rx.BaseState.
|
|
275
|
-
if not is_testing_env() and
|
|
276
|
-
# Only
|
|
275
|
+
if not is_testing_env() and BaseState.__subclasses__() != [State]:
|
|
276
|
+
# Only rx.State is allowed as Base State subclass.
|
|
277
277
|
raise ValueError(
|
|
278
|
-
"rx.BaseState cannot be subclassed
|
|
278
|
+
"rx.BaseState cannot be subclassed directly. Use rx.State instead"
|
|
279
279
|
)
|
|
280
280
|
|
|
281
281
|
if "breakpoints" in self.style:
|
|
@@ -377,6 +377,7 @@ class App(MiddlewareMixin, LifespanMixin, Base):
|
|
|
377
377
|
"""Add default api endpoints (ping)."""
|
|
378
378
|
# To test the server.
|
|
379
379
|
self.api.get(str(constants.Endpoint.PING))(ping)
|
|
380
|
+
self.api.get(str(constants.Endpoint.HEALTH))(health)
|
|
380
381
|
|
|
381
382
|
def _add_optional_endpoints(self):
|
|
382
383
|
"""Add optional api endpoints (_upload)."""
|
|
@@ -442,7 +443,7 @@ class App(MiddlewareMixin, LifespanMixin, Base):
|
|
|
442
443
|
raise
|
|
443
444
|
except TypeError as e:
|
|
444
445
|
message = str(e)
|
|
445
|
-
if "
|
|
446
|
+
if "Var" in message:
|
|
446
447
|
raise VarOperationTypeError(
|
|
447
448
|
"You may be trying to use an invalid Python function on a state var. "
|
|
448
449
|
"When referencing a var inside your render code, only limited var operations are supported. "
|
|
@@ -527,9 +528,10 @@ class App(MiddlewareMixin, LifespanMixin, Base):
|
|
|
527
528
|
self._enable_state()
|
|
528
529
|
else:
|
|
529
530
|
for var in component._get_vars(include_children=True):
|
|
530
|
-
|
|
531
|
+
var_data = var._get_all_var_data()
|
|
532
|
+
if not var_data:
|
|
531
533
|
continue
|
|
532
|
-
if not
|
|
534
|
+
if not var_data.state:
|
|
533
535
|
continue
|
|
534
536
|
self._enable_state()
|
|
535
537
|
break
|
|
@@ -822,7 +824,7 @@ class App(MiddlewareMixin, LifespanMixin, Base):
|
|
|
822
824
|
for dep in deps:
|
|
823
825
|
if dep not in state.vars and dep not in state.backend_vars:
|
|
824
826
|
raise exceptions.VarDependencyError(
|
|
825
|
-
f"ComputedVar {var.
|
|
827
|
+
f"ComputedVar {var._js_expr} on state {state.__name__} has an invalid dependency {dep}"
|
|
826
828
|
)
|
|
827
829
|
|
|
828
830
|
for substate in state.class_subclasses:
|
|
@@ -1113,6 +1115,7 @@ class App(MiddlewareMixin, LifespanMixin, Base):
|
|
|
1113
1115
|
Task if the event was backgroundable, otherwise None
|
|
1114
1116
|
"""
|
|
1115
1117
|
substate, handler = state._get_event_handler(event)
|
|
1118
|
+
|
|
1116
1119
|
if not handler.is_background:
|
|
1117
1120
|
return None
|
|
1118
1121
|
|
|
@@ -1317,6 +1320,38 @@ async def ping() -> str:
|
|
|
1317
1320
|
return "pong"
|
|
1318
1321
|
|
|
1319
1322
|
|
|
1323
|
+
async def health() -> JSONResponse:
|
|
1324
|
+
"""Health check endpoint to assess the status of the database and Redis services.
|
|
1325
|
+
|
|
1326
|
+
Returns:
|
|
1327
|
+
JSONResponse: A JSON object with the health status:
|
|
1328
|
+
- "status" (bool): Overall health, True if all checks pass.
|
|
1329
|
+
- "db" (bool or str): Database status - True, False, or "NA".
|
|
1330
|
+
- "redis" (bool or str): Redis status - True, False, or "NA".
|
|
1331
|
+
"""
|
|
1332
|
+
health_status = {"status": True}
|
|
1333
|
+
status_code = 200
|
|
1334
|
+
|
|
1335
|
+
db_status, redis_status = await asyncio.gather(
|
|
1336
|
+
get_db_status(), prerequisites.get_redis_status()
|
|
1337
|
+
)
|
|
1338
|
+
|
|
1339
|
+
health_status["db"] = db_status
|
|
1340
|
+
|
|
1341
|
+
if redis_status is None:
|
|
1342
|
+
health_status["redis"] = False
|
|
1343
|
+
else:
|
|
1344
|
+
health_status["redis"] = redis_status
|
|
1345
|
+
|
|
1346
|
+
if not health_status["db"] or (
|
|
1347
|
+
not health_status["redis"] and redis_status is not None
|
|
1348
|
+
):
|
|
1349
|
+
health_status["status"] = False
|
|
1350
|
+
status_code = 503
|
|
1351
|
+
|
|
1352
|
+
return JSONResponse(content=health_status, status_code=status_code)
|
|
1353
|
+
|
|
1354
|
+
|
|
1320
1355
|
def upload(app: App):
|
|
1321
1356
|
"""Upload a file.
|
|
1322
1357
|
|
|
@@ -1497,8 +1532,9 @@ class EventNamespace(AsyncNamespace):
|
|
|
1497
1532
|
sid: The Socket.IO session id.
|
|
1498
1533
|
data: The event data.
|
|
1499
1534
|
"""
|
|
1535
|
+
fields = json.loads(data)
|
|
1500
1536
|
# Get the event.
|
|
1501
|
-
event = Event.
|
|
1537
|
+
event = Event(**{k: v for k, v in fields.items() if k != "handler"})
|
|
1502
1538
|
|
|
1503
1539
|
self.token_to_sid[event.token] = sid
|
|
1504
1540
|
self.sid_to_token[sid] = event.token
|
reflex/app_module_for_backend.py
CHANGED
|
@@ -15,7 +15,7 @@ if constants.CompileVars.APP != "app":
|
|
|
15
15
|
telemetry.send("compile")
|
|
16
16
|
app_module = get_app(reload=False)
|
|
17
17
|
app = getattr(app_module, constants.CompileVars.APP)
|
|
18
|
-
# For py3.
|
|
18
|
+
# For py3.9 compatibility when redis is used, we MUST add any decorator pages
|
|
19
19
|
# before compiling the app in a thread to avoid event loop error (REF-2172).
|
|
20
20
|
app._apply_decorated_pages()
|
|
21
21
|
compile_future = ThreadPoolExecutor(max_workers=1).submit(app._compile)
|
reflex/base.py
CHANGED
|
@@ -110,14 +110,15 @@ class Base(BaseModel): # pyright: ignore [reportUnboundVariable]
|
|
|
110
110
|
var: The variable to add a pydantic field for.
|
|
111
111
|
default_value: The default value of the field
|
|
112
112
|
"""
|
|
113
|
+
var_name = var._js_expr.split(".")[-1]
|
|
113
114
|
new_field = ModelField.infer(
|
|
114
|
-
name=
|
|
115
|
+
name=var_name,
|
|
115
116
|
value=default_value,
|
|
116
117
|
annotation=var._var_type,
|
|
117
118
|
class_validators=None,
|
|
118
119
|
config=cls.__config__, # type: ignore
|
|
119
120
|
)
|
|
120
|
-
cls.__fields__.update({
|
|
121
|
+
cls.__fields__.update({var_name: new_field})
|
|
121
122
|
|
|
122
123
|
def get_value(self, key: str) -> Any:
|
|
123
124
|
"""Get the value of a field.
|
reflex/compiler/compiler.py
CHANGED
|
@@ -22,7 +22,7 @@ from reflex.style import SYSTEM_COLOR_MODE
|
|
|
22
22
|
from reflex.utils.exec import is_prod_mode
|
|
23
23
|
from reflex.utils.imports import ImportVar
|
|
24
24
|
from reflex.utils.prerequisites import get_web_dir
|
|
25
|
-
from reflex.vars import Var
|
|
25
|
+
from reflex.vars.base import LiteralVar, Var
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
def _compile_document_root(root: Component) -> str:
|
|
@@ -57,7 +57,7 @@ def _compile_app(app_root: Component) -> str:
|
|
|
57
57
|
)
|
|
58
58
|
|
|
59
59
|
|
|
60
|
-
def _compile_theme(theme:
|
|
60
|
+
def _compile_theme(theme: str) -> str:
|
|
61
61
|
"""Compile the theme.
|
|
62
62
|
|
|
63
63
|
Args:
|
|
@@ -80,8 +80,8 @@ def _compile_contexts(state: Optional[Type[BaseState]], theme: Component | None)
|
|
|
80
80
|
The compiled context file.
|
|
81
81
|
"""
|
|
82
82
|
appearance = getattr(theme, "appearance", None)
|
|
83
|
-
if appearance is None or
|
|
84
|
-
appearance = SYSTEM_COLOR_MODE
|
|
83
|
+
if appearance is None or str(LiteralVar.create(appearance)) == '"inherit"':
|
|
84
|
+
appearance = LiteralVar.create(SYSTEM_COLOR_MODE)
|
|
85
85
|
|
|
86
86
|
last_compiled_time = str(datetime.now())
|
|
87
87
|
return (
|
|
@@ -377,7 +377,7 @@ def compile_theme(style: ComponentStyle) -> tuple[str, str]:
|
|
|
377
377
|
theme = utils.create_theme(style)
|
|
378
378
|
|
|
379
379
|
# Compile the theme.
|
|
380
|
-
code = _compile_theme(theme)
|
|
380
|
+
code = _compile_theme(str(LiteralVar.create(theme)))
|
|
381
381
|
return output_path, code
|
|
382
382
|
|
|
383
383
|
|
reflex/compiler/utils.py
CHANGED
|
@@ -8,6 +8,7 @@ from typing import Any, Callable, Dict, Optional, Type, Union
|
|
|
8
8
|
from urllib.parse import urlparse
|
|
9
9
|
|
|
10
10
|
from reflex.utils.prerequisites import get_web_dir
|
|
11
|
+
from reflex.vars.base import Var
|
|
11
12
|
|
|
12
13
|
try:
|
|
13
14
|
from pydantic.v1.fields import ModelField
|
|
@@ -32,7 +33,6 @@ from reflex.state import BaseState, Cookie, LocalStorage, SessionStorage
|
|
|
32
33
|
from reflex.style import Style
|
|
33
34
|
from reflex.utils import console, format, imports, path_ops
|
|
34
35
|
from reflex.utils.imports import ImportVar, ParsedImportDict
|
|
35
|
-
from reflex.vars import Var
|
|
36
36
|
|
|
37
37
|
# To re-export this function.
|
|
38
38
|
merge_imports = imports.merge_imports
|
|
@@ -152,7 +152,9 @@ def compile_state(state: Type[BaseState]) -> dict:
|
|
|
152
152
|
console.warn(
|
|
153
153
|
f"Failed to compile initial state with computed vars, excluding them: {e}"
|
|
154
154
|
)
|
|
155
|
-
initial_state = state(_reflex_internal_init=True).dict(
|
|
155
|
+
initial_state = state(_reflex_internal_init=True).dict(
|
|
156
|
+
initial=True, include_computed=False
|
|
157
|
+
)
|
|
156
158
|
return format.format_state(initial_state)
|
|
157
159
|
|
|
158
160
|
|
|
@@ -266,7 +268,7 @@ def compile_custom_component(
|
|
|
266
268
|
}
|
|
267
269
|
|
|
268
270
|
# Concatenate the props.
|
|
269
|
-
props = [prop.
|
|
271
|
+
props = [prop._js_expr for prop in component.get_prop_vars()]
|
|
270
272
|
|
|
271
273
|
# Compile the component.
|
|
272
274
|
return (
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
from reflex.components.base.fragment import Fragment
|
|
4
4
|
from reflex.components.component import Component
|
|
5
|
-
from reflex.vars import Var
|
|
5
|
+
from reflex.vars.base import Var
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class AppWrap(Fragment):
|
|
@@ -15,6 +15,4 @@ class AppWrap(Fragment):
|
|
|
15
15
|
Returns:
|
|
16
16
|
A new AppWrap component containing {children}.
|
|
17
17
|
"""
|
|
18
|
-
return super().create(
|
|
19
|
-
Var.create("{children}", _var_is_local=False, _var_is_string=False)
|
|
20
|
-
)
|
|
18
|
+
return super().create(Var(_js_expr="children"))
|
|
@@ -8,7 +8,7 @@ from typing import Any, Callable, Dict, Optional, Union, overload
|
|
|
8
8
|
from reflex.components.base.fragment import Fragment
|
|
9
9
|
from reflex.event import EventHandler, EventSpec
|
|
10
10
|
from reflex.style import Style
|
|
11
|
-
from reflex.vars import
|
|
11
|
+
from reflex.vars.base import Var
|
|
12
12
|
|
|
13
13
|
class AppWrap(Fragment):
|
|
14
14
|
@overload
|
|
@@ -22,50 +22,40 @@ class AppWrap(Fragment):
|
|
|
22
22
|
class_name: Optional[Any] = None,
|
|
23
23
|
autofocus: Optional[bool] = None,
|
|
24
24
|
custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
|
|
25
|
-
on_blur: Optional[
|
|
26
|
-
|
|
27
|
-
] = None,
|
|
28
|
-
on_click: Optional[
|
|
29
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
30
|
-
] = None,
|
|
25
|
+
on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
26
|
+
on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
31
27
|
on_context_menu: Optional[
|
|
32
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
28
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
33
29
|
] = None,
|
|
34
30
|
on_double_click: Optional[
|
|
35
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
36
|
-
] = None,
|
|
37
|
-
on_focus: Optional[
|
|
38
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
39
|
-
] = None,
|
|
40
|
-
on_mount: Optional[
|
|
41
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
31
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
42
32
|
] = None,
|
|
33
|
+
on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
34
|
+
on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
43
35
|
on_mouse_down: Optional[
|
|
44
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
36
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
45
37
|
] = None,
|
|
46
38
|
on_mouse_enter: Optional[
|
|
47
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
39
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
48
40
|
] = None,
|
|
49
41
|
on_mouse_leave: Optional[
|
|
50
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
42
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
51
43
|
] = None,
|
|
52
44
|
on_mouse_move: Optional[
|
|
53
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
45
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
54
46
|
] = None,
|
|
55
47
|
on_mouse_out: Optional[
|
|
56
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
48
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
57
49
|
] = None,
|
|
58
50
|
on_mouse_over: Optional[
|
|
59
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
51
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
60
52
|
] = None,
|
|
61
53
|
on_mouse_up: Optional[
|
|
62
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
63
|
-
] = None,
|
|
64
|
-
on_scroll: Optional[
|
|
65
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
54
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
66
55
|
] = None,
|
|
56
|
+
on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
67
57
|
on_unmount: Optional[
|
|
68
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
58
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
69
59
|
] = None,
|
|
70
60
|
**props,
|
|
71
61
|
) -> "AppWrap":
|
reflex/components/base/bare.py
CHANGED
|
@@ -7,13 +7,13 @@ from typing import Any, Iterator
|
|
|
7
7
|
from reflex.components.component import Component
|
|
8
8
|
from reflex.components.tags import Tag
|
|
9
9
|
from reflex.components.tags.tagless import Tagless
|
|
10
|
-
from reflex.vars import Var
|
|
10
|
+
from reflex.vars.base import Var
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class Bare(Component):
|
|
14
14
|
"""A component with no tag."""
|
|
15
15
|
|
|
16
|
-
contents: Var[
|
|
16
|
+
contents: Var[Any]
|
|
17
17
|
|
|
18
18
|
@classmethod
|
|
19
19
|
def create(cls, contents: Any) -> Component:
|
|
@@ -25,13 +25,15 @@ class Bare(Component):
|
|
|
25
25
|
Returns:
|
|
26
26
|
The component.
|
|
27
27
|
"""
|
|
28
|
-
if isinstance(contents, Var)
|
|
29
|
-
contents
|
|
28
|
+
if isinstance(contents, Var):
|
|
29
|
+
return cls(contents=contents)
|
|
30
30
|
else:
|
|
31
31
|
contents = str(contents) if contents is not None else ""
|
|
32
32
|
return cls(contents=contents) # type: ignore
|
|
33
33
|
|
|
34
34
|
def _render(self) -> Tag:
|
|
35
|
+
if isinstance(self.contents, Var):
|
|
36
|
+
return Tagless(contents=f"{{{str(self.contents)}}}")
|
|
35
37
|
return Tagless(contents=str(self.contents))
|
|
36
38
|
|
|
37
39
|
def _get_vars(self, include_children: bool = False) -> Iterator[Var]:
|
reflex/components/base/body.pyi
CHANGED
|
@@ -8,7 +8,7 @@ from typing import Any, Callable, Dict, Optional, Union, overload
|
|
|
8
8
|
from reflex.components.component import Component
|
|
9
9
|
from reflex.event import EventHandler, EventSpec
|
|
10
10
|
from reflex.style import Style
|
|
11
|
-
from reflex.vars import
|
|
11
|
+
from reflex.vars.base import Var
|
|
12
12
|
|
|
13
13
|
class Body(Component):
|
|
14
14
|
@overload
|
|
@@ -22,50 +22,40 @@ class Body(Component):
|
|
|
22
22
|
class_name: Optional[Any] = None,
|
|
23
23
|
autofocus: Optional[bool] = None,
|
|
24
24
|
custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
|
|
25
|
-
on_blur: Optional[
|
|
26
|
-
|
|
27
|
-
] = None,
|
|
28
|
-
on_click: Optional[
|
|
29
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
30
|
-
] = None,
|
|
25
|
+
on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
26
|
+
on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
31
27
|
on_context_menu: Optional[
|
|
32
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
28
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
33
29
|
] = None,
|
|
34
30
|
on_double_click: Optional[
|
|
35
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
36
|
-
] = None,
|
|
37
|
-
on_focus: Optional[
|
|
38
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
39
|
-
] = None,
|
|
40
|
-
on_mount: Optional[
|
|
41
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
31
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
42
32
|
] = None,
|
|
33
|
+
on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
34
|
+
on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
43
35
|
on_mouse_down: Optional[
|
|
44
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
36
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
45
37
|
] = None,
|
|
46
38
|
on_mouse_enter: Optional[
|
|
47
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
39
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
48
40
|
] = None,
|
|
49
41
|
on_mouse_leave: Optional[
|
|
50
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
42
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
51
43
|
] = None,
|
|
52
44
|
on_mouse_move: Optional[
|
|
53
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
45
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
54
46
|
] = None,
|
|
55
47
|
on_mouse_out: Optional[
|
|
56
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
48
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
57
49
|
] = None,
|
|
58
50
|
on_mouse_over: Optional[
|
|
59
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
51
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
60
52
|
] = None,
|
|
61
53
|
on_mouse_up: Optional[
|
|
62
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
63
|
-
] = None,
|
|
64
|
-
on_scroll: Optional[
|
|
65
|
-
Union[EventHandler, EventSpec, list, Callable, BaseVar]
|
|
54
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
66
55
|
] = None,
|
|
56
|
+
on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
67
57
|
on_unmount: Optional[
|
|
68
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
58
|
+
Union[EventHandler, EventSpec, list, Callable, Var]
|
|
69
59
|
] = None,
|
|
70
60
|
**props,
|
|
71
61
|
) -> "Body":
|