reflex 0.6.0__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/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/.templates/web/components/reflex/chakra_color_mode_provider.js +36 -0
- reflex/.templates/web/utils/state.js +1 -3
- reflex/__init__.py +2 -8
- reflex/__init__.pyi +1 -2
- reflex/app.py +2 -4
- reflex/app_module_for_backend.py +1 -1
- 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 +27 -17
- reflex/components/base/bare.py +5 -4
- reflex/components/base/body.pyi +27 -17
- reflex/components/base/document.pyi +131 -81
- reflex/components/base/error_boundary.py +7 -6
- reflex/components/base/error_boundary.pyi +33 -20
- reflex/components/base/fragment.pyi +27 -17
- reflex/components/base/head.pyi +53 -33
- reflex/components/base/link.py +1 -1
- reflex/components/base/link.pyi +54 -33
- reflex/components/base/meta.pyi +105 -65
- reflex/components/base/script.py +2 -1
- reflex/components/base/script.pyi +38 -21
- reflex/components/component.py +47 -53
- reflex/components/core/banner.py +27 -23
- reflex/components/core/banner.pyi +171 -134
- reflex/components/core/client_side_routing.py +3 -2
- reflex/components/core/client_side_routing.pyi +54 -33
- reflex/components/core/clipboard.py +1 -2
- reflex/components/core/clipboard.pyi +33 -20
- reflex/components/core/cond.py +5 -5
- reflex/components/core/debounce.py +5 -5
- reflex/components/core/debounce.pyi +33 -20
- reflex/components/core/foreach.py +4 -3
- reflex/components/core/html.py +1 -1
- reflex/components/core/html.pyi +46 -35
- reflex/components/core/match.py +17 -17
- reflex/components/core/upload.py +23 -17
- reflex/components/core/upload.pyi +124 -78
- reflex/components/datadisplay/code.py +10 -9
- reflex/components/datadisplay/code.pyi +409 -299
- reflex/components/datadisplay/dataeditor.py +10 -8
- reflex/components/datadisplay/dataeditor.pyi +53 -40
- reflex/components/el/element.pyi +27 -17
- reflex/components/el/elements/base.py +1 -1
- reflex/components/el/elements/base.pyi +45 -34
- reflex/components/el/elements/forms.py +16 -16
- reflex/components/el/elements/forms.pyi +707 -554
- reflex/components/el/elements/inline.py +1 -1
- reflex/components/el/elements/inline.pyi +1218 -937
- reflex/components/el/elements/media.py +1 -1
- reflex/components/el/elements/media.pyi +997 -786
- reflex/components/el/elements/metadata.py +6 -3
- reflex/components/el/elements/metadata.pyi +242 -181
- reflex/components/el/elements/other.py +1 -1
- reflex/components/el/elements/other.pyi +306 -235
- reflex/components/el/elements/scripts.py +1 -1
- reflex/components/el/elements/scripts.pyi +140 -109
- reflex/components/el/elements/sectioning.py +2 -0
- reflex/components/el/elements/sectioning.pyi +647 -496
- reflex/components/el/elements/tables.py +1 -1
- reflex/components/el/elements/tables.pyi +452 -351
- reflex/components/el/elements/typography.py +1 -1
- reflex/components/el/elements/typography.pyi +657 -506
- reflex/components/gridjs/datatable.py +9 -6
- reflex/components/gridjs/datatable.pyi +56 -35
- reflex/components/lucide/icon.py +1 -1
- reflex/components/lucide/icon.pyi +54 -33
- reflex/components/markdown/markdown.py +31 -26
- reflex/components/markdown/markdown.pyi +37 -27
- reflex/components/moment/moment.py +12 -13
- reflex/components/moment/moment.pyi +35 -23
- reflex/components/next/base.pyi +27 -17
- reflex/components/next/image.py +1 -1
- reflex/components/next/image.pyi +37 -22
- reflex/components/next/link.py +1 -1
- reflex/components/next/link.pyi +28 -17
- reflex/components/next/video.py +1 -1
- reflex/components/next/video.pyi +28 -17
- reflex/components/plotly/plotly.py +13 -12
- reflex/components/plotly/plotly.pyi +54 -39
- reflex/components/props.py +1 -1
- reflex/components/radix/__init__.pyi +0 -1
- reflex/components/radix/primitives/__init__.pyi +0 -1
- reflex/components/radix/primitives/accordion.py +4 -4
- reflex/components/radix/primitives/accordion.pyi +495 -424
- reflex/components/radix/primitives/base.py +1 -1
- reflex/components/radix/primitives/base.pyi +54 -33
- reflex/components/radix/primitives/drawer.py +1 -1
- reflex/components/radix/primitives/drawer.pyi +273 -172
- reflex/components/radix/primitives/form.py +1 -1
- reflex/components/radix/primitives/form.pyi +364 -257
- reflex/components/radix/primitives/progress.py +1 -1
- reflex/components/radix/primitives/progress.pyi +282 -231
- reflex/components/radix/primitives/slider.py +1 -1
- reflex/components/radix/primitives/slider.pyi +138 -87
- reflex/components/radix/themes/base.py +24 -3
- reflex/components/radix/themes/base.pyi +250 -178
- reflex/components/radix/themes/color_mode.py +5 -5
- reflex/components/radix/themes/color_mode.pyi +220 -187
- reflex/components/radix/themes/components/alert_dialog.py +1 -1
- reflex/components/radix/themes/components/alert_dialog.pyi +207 -136
- reflex/components/radix/themes/components/aspect_ratio.py +1 -1
- reflex/components/radix/themes/components/aspect_ratio.pyi +28 -17
- reflex/components/radix/themes/components/avatar.py +1 -1
- reflex/components/radix/themes/components/avatar.pyi +81 -70
- reflex/components/radix/themes/components/badge.py +1 -1
- reflex/components/radix/themes/components/badge.pyi +99 -88
- reflex/components/radix/themes/components/button.py +1 -1
- reflex/components/radix/themes/components/button.pyi +109 -98
- reflex/components/radix/themes/components/callout.py +1 -1
- reflex/components/radix/themes/components/callout.pyi +373 -322
- reflex/components/radix/themes/components/card.py +1 -1
- reflex/components/radix/themes/components/card.pyi +49 -38
- reflex/components/radix/themes/components/checkbox.py +2 -1
- reflex/components/radix/themes/components/checkbox.pyi +245 -208
- reflex/components/radix/themes/components/checkbox_cards.py +1 -1
- reflex/components/radix/themes/components/checkbox_cards.pyi +115 -94
- reflex/components/radix/themes/components/checkbox_group.py +1 -1
- reflex/components/radix/themes/components/checkbox_group.pyi +107 -86
- reflex/components/radix/themes/components/context_menu.py +1 -1
- reflex/components/radix/themes/components/context_menu.pyi +319 -238
- reflex/components/radix/themes/components/data_list.py +1 -1
- reflex/components/radix/themes/components/data_list.pyi +171 -130
- reflex/components/radix/themes/components/dialog.py +1 -1
- reflex/components/radix/themes/components/dialog.pyi +210 -139
- reflex/components/radix/themes/components/dropdown_menu.py +1 -1
- reflex/components/radix/themes/components/dropdown_menu.pyi +332 -249
- reflex/components/radix/themes/components/hover_card.py +1 -1
- reflex/components/radix/themes/components/hover_card.pyi +131 -90
- reflex/components/radix/themes/components/icon_button.py +3 -2
- reflex/components/radix/themes/components/icon_button.pyi +109 -98
- reflex/components/radix/themes/components/inset.py +1 -1
- reflex/components/radix/themes/components/inset.pyi +58 -47
- reflex/components/radix/themes/components/popover.py +1 -1
- reflex/components/radix/themes/components/popover.pyi +136 -95
- reflex/components/radix/themes/components/progress.py +1 -1
- reflex/components/radix/themes/components/progress.pyi +82 -71
- reflex/components/radix/themes/components/radio.py +1 -1
- reflex/components/radix/themes/components/radio.pyi +80 -69
- reflex/components/radix/themes/components/radio_cards.py +1 -1
- reflex/components/radix/themes/components/radio_cards.pyi +119 -98
- reflex/components/radix/themes/components/radio_group.py +11 -8
- reflex/components/radix/themes/components/radio_group.pyi +271 -228
- reflex/components/radix/themes/components/scroll_area.py +1 -1
- reflex/components/radix/themes/components/scroll_area.pyi +32 -21
- reflex/components/radix/themes/components/segmented_control.py +1 -1
- reflex/components/radix/themes/components/segmented_control.pyi +113 -90
- reflex/components/radix/themes/components/select.py +3 -2
- reflex/components/radix/themes/components/select.pyi +471 -374
- reflex/components/radix/themes/components/separator.py +2 -1
- reflex/components/radix/themes/components/separator.pyi +80 -69
- reflex/components/radix/themes/components/skeleton.py +1 -1
- reflex/components/radix/themes/components/skeleton.pyi +34 -23
- reflex/components/radix/themes/components/slider.py +3 -2
- reflex/components/radix/themes/components/slider.pyi +88 -75
- reflex/components/radix/themes/components/spinner.py +1 -1
- reflex/components/radix/themes/components/spinner.pyi +30 -19
- reflex/components/radix/themes/components/switch.py +1 -1
- reflex/components/radix/themes/components/switch.pyi +84 -71
- reflex/components/radix/themes/components/table.py +1 -1
- reflex/components/radix/themes/components/table.pyi +332 -261
- reflex/components/radix/themes/components/tabs.py +1 -1
- reflex/components/radix/themes/components/tabs.pyi +194 -139
- reflex/components/radix/themes/components/text_area.py +1 -1
- reflex/components/radix/themes/components/text_area.pyi +111 -96
- reflex/components/radix/themes/components/text_field.py +1 -1
- reflex/components/radix/themes/components/text_field.pyi +286 -247
- reflex/components/radix/themes/components/tooltip.py +1 -1
- reflex/components/radix/themes/components/tooltip.pyi +37 -26
- reflex/components/radix/themes/layout/__init__.pyi +0 -1
- reflex/components/radix/themes/layout/base.py +1 -1
- reflex/components/radix/themes/layout/base.pyi +67 -56
- reflex/components/radix/themes/layout/box.pyi +45 -34
- reflex/components/radix/themes/layout/center.pyi +67 -56
- reflex/components/radix/themes/layout/container.py +2 -1
- reflex/components/radix/themes/layout/container.pyi +47 -36
- reflex/components/radix/themes/layout/flex.py +1 -1
- reflex/components/radix/themes/layout/flex.pyi +67 -56
- reflex/components/radix/themes/layout/grid.py +1 -1
- reflex/components/radix/themes/layout/grid.pyi +75 -64
- reflex/components/radix/themes/layout/list.py +6 -5
- reflex/components/radix/themes/layout/list.pyi +244 -193
- reflex/components/radix/themes/layout/section.py +2 -1
- reflex/components/radix/themes/layout/section.pyi +47 -36
- reflex/components/radix/themes/layout/spacer.pyi +67 -56
- reflex/components/radix/themes/layout/stack.py +1 -1
- reflex/components/radix/themes/layout/stack.pyi +159 -128
- reflex/components/radix/themes/typography/blockquote.py +1 -1
- reflex/components/radix/themes/typography/blockquote.pyi +100 -89
- reflex/components/radix/themes/typography/code.py +1 -1
- reflex/components/radix/themes/typography/code.pyi +101 -90
- reflex/components/radix/themes/typography/heading.py +1 -1
- reflex/components/radix/themes/typography/heading.pyi +107 -96
- reflex/components/radix/themes/typography/link.py +1 -1
- reflex/components/radix/themes/typography/link.pyi +113 -102
- reflex/components/radix/themes/typography/text.py +1 -1
- reflex/components/radix/themes/typography/text.pyi +572 -501
- reflex/components/react_player/audio.pyi +60 -33
- reflex/components/react_player/react_player.py +1 -1
- reflex/components/react_player/react_player.pyi +60 -33
- reflex/components/react_player/video.pyi +60 -33
- reflex/components/recharts/cartesian.py +3 -2
- reflex/components/recharts/cartesian.pyi +861 -678
- reflex/components/recharts/charts.py +5 -4
- reflex/components/recharts/charts.pyi +357 -252
- reflex/components/recharts/general.py +2 -1
- reflex/components/recharts/general.pyi +231 -180
- reflex/components/recharts/polar.py +5 -4
- reflex/components/recharts/polar.pyi +181 -144
- reflex/components/recharts/recharts.pyi +53 -33
- reflex/components/sonner/toast.py +17 -16
- reflex/components/sonner/toast.pyi +47 -36
- reflex/components/suneditor/editor.py +3 -2
- reflex/components/suneditor/editor.pyi +78 -55
- reflex/components/tags/cond_tag.py +4 -6
- reflex/components/tags/iter_tag.py +16 -28
- reflex/components/tags/match_tag.py +4 -6
- reflex/components/tags/tag.py +23 -40
- reflex/custom_components/custom_components.py +1 -3
- reflex/event.py +65 -113
- reflex/experimental/client_state.py +24 -25
- reflex/experimental/hooks.py +16 -16
- reflex/experimental/layout.py +5 -5
- reflex/experimental/layout.pyi +187 -136
- reflex/{vars → ivars}/__init__.py +2 -6
- reflex/{vars → ivars}/base.py +216 -599
- reflex/{vars → ivars}/function.py +19 -15
- reflex/{vars → ivars}/number.py +20 -41
- reflex/{vars → ivars}/object.py +30 -28
- reflex/{vars → ivars}/sequence.py +50 -53
- reflex/middleware/hydrate_middleware.py +0 -2
- reflex/middleware/middleware.py +3 -3
- reflex/state.py +82 -148
- reflex/style.py +22 -21
- reflex/utils/exceptions.py +0 -20
- reflex/utils/format.py +34 -54
- reflex/utils/imports.py +73 -16
- reflex/utils/prerequisites.py +15 -35
- reflex/utils/pyi_generator.py +8 -13
- reflex/utils/serializers.py +22 -12
- reflex/utils/telemetry.py +2 -3
- reflex/utils/types.py +5 -10
- reflex/vars.py +501 -0
- {reflex-0.6.0.dist-info → reflex-0.6.0a1.dist-info}/METADATA +5 -4
- reflex-0.6.0a1.dist-info/RECORD +384 -0
- reflex-0.6.0.dist-info/RECORD +0 -382
- {reflex-0.6.0.dist-info → reflex-0.6.0a1.dist-info}/LICENSE +0 -0
- {reflex-0.6.0.dist-info → reflex-0.6.0a1.dist-info}/WHEEL +0 -0
- {reflex-0.6.0.dist-info → reflex-0.6.0a1.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.8"
|
|
12
12
|
authors = [{ name = "", email = "YOUREMAIL@domain.com" }]
|
|
13
13
|
keywords = ["reflex","reflex-custom-components"]
|
|
14
14
|
|
|
15
|
-
dependencies = ["reflex>=
|
|
15
|
+
dependencies = ["reflex>=0.4.2"]
|
|
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 } attribute="class">
|
|
30
|
+
<ThemeProvider defaultTheme={ defaultColorMode } storageKey="chakra-ui-color-mode" attribute="class">
|
|
31
31
|
<AppWrap>
|
|
32
32
|
<StateProvider>
|
|
33
33
|
<EventLoopProvider>
|
|
@@ -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._var_name }})) {
|
|
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._var_name }}):
|
|
92
92
|
{% endfor %}
|
|
93
93
|
return {{ case[-1] }};
|
|
94
94
|
break;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { useColorMode as chakraUseColorMode } from "@chakra-ui/react";
|
|
2
|
+
import { useTheme } from "next-themes";
|
|
3
|
+
import { useEffect, useState } from "react";
|
|
4
|
+
import { ColorModeContext, defaultColorMode } from "/utils/context.js";
|
|
5
|
+
|
|
6
|
+
export default function ChakraColorModeProvider({ children }) {
|
|
7
|
+
const { theme, resolvedTheme, setTheme } = useTheme();
|
|
8
|
+
const { colorMode, toggleColorMode } = chakraUseColorMode();
|
|
9
|
+
const [resolvedColorMode, setResolvedColorMode] = useState(colorMode);
|
|
10
|
+
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
if (colorMode != resolvedTheme) {
|
|
13
|
+
toggleColorMode();
|
|
14
|
+
}
|
|
15
|
+
setResolvedColorMode(resolvedTheme);
|
|
16
|
+
}, [theme, resolvedTheme]);
|
|
17
|
+
|
|
18
|
+
const rawColorMode = colorMode;
|
|
19
|
+
const setColorMode = (mode) => {
|
|
20
|
+
const allowedModes = ["light", "dark", "system"];
|
|
21
|
+
if (!allowedModes.includes(mode)) {
|
|
22
|
+
console.error(
|
|
23
|
+
`Invalid color mode "${mode}". Defaulting to "${defaultColorMode}".`
|
|
24
|
+
);
|
|
25
|
+
mode = defaultColorMode;
|
|
26
|
+
}
|
|
27
|
+
setTheme(mode);
|
|
28
|
+
};
|
|
29
|
+
return (
|
|
30
|
+
<ColorModeContext.Provider
|
|
31
|
+
value={{ rawColorMode, resolvedColorMode, toggleColorMode, setColorMode }}
|
|
32
|
+
>
|
|
33
|
+
{children}
|
|
34
|
+
</ColorModeContext.Provider>
|
|
35
|
+
);
|
|
36
|
+
}
|
|
@@ -805,9 +805,7 @@ export const useEventLoop = (
|
|
|
805
805
|
* @returns True if the value is truthy, false otherwise.
|
|
806
806
|
*/
|
|
807
807
|
export const isTrue = (val) => {
|
|
808
|
-
|
|
809
|
-
if (val === Object(val)) return Object.keys(val).length > 0;
|
|
810
|
-
return Boolean(val);
|
|
808
|
+
return Array.isArray(val) ? val.length > 0 : !!val;
|
|
811
809
|
};
|
|
812
810
|
|
|
813
811
|
/**
|
reflex/__init__.py
CHANGED
|
@@ -206,13 +206,6 @@ RADIX_PRIMITIVES_MAPPING: dict = {
|
|
|
206
206
|
"components.radix.primitives.form": [
|
|
207
207
|
"form",
|
|
208
208
|
],
|
|
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
|
|
216
209
|
}
|
|
217
210
|
|
|
218
211
|
COMPONENTS_CORE_MAPPING: dict = {
|
|
@@ -255,7 +248,7 @@ RADIX_MAPPING: dict = {
|
|
|
255
248
|
**RADIX_THEMES_COMPONENTS_MAPPING,
|
|
256
249
|
**RADIX_THEMES_TYPOGRAPHY_MAPPING,
|
|
257
250
|
**RADIX_THEMES_LAYOUT_MAPPING,
|
|
258
|
-
**
|
|
251
|
+
**RADIX_PRIMITIVES_MAPPING,
|
|
259
252
|
}
|
|
260
253
|
|
|
261
254
|
_MAPPING: dict = {
|
|
@@ -345,6 +338,7 @@ _SUBMODULES: set[str] = {
|
|
|
345
338
|
"testing",
|
|
346
339
|
"utils",
|
|
347
340
|
"vars",
|
|
341
|
+
"ivars",
|
|
348
342
|
"config",
|
|
349
343
|
"compiler",
|
|
350
344
|
}
|
reflex/__init__.pyi
CHANGED
|
@@ -12,6 +12,7 @@ from . import compiler as compiler
|
|
|
12
12
|
from . import components as components
|
|
13
13
|
from . import config as config
|
|
14
14
|
from . import event as event
|
|
15
|
+
from . import ivars as ivars
|
|
15
16
|
from . import model as model
|
|
16
17
|
from . import style as style
|
|
17
18
|
from . import testing as testing
|
|
@@ -131,7 +132,6 @@ from .components.radix.themes.layout.container import container as container
|
|
|
131
132
|
from .components.radix.themes.layout.flex import flex as flex
|
|
132
133
|
from .components.radix.themes.layout.grid import grid as grid
|
|
133
134
|
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
|
|
135
135
|
from .components.radix.themes.layout.list import ordered_list as ordered_list
|
|
136
136
|
from .components.radix.themes.layout.list import unordered_list as unordered_list
|
|
137
137
|
from .components.radix.themes.layout.section import section as section
|
|
@@ -197,7 +197,6 @@ 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
|
|
201
200
|
COMPONENTS_CORE_MAPPING: dict
|
|
202
201
|
COMPONENTS_BASE_MAPPING: dict
|
|
203
202
|
RADIX_MAPPING: dict
|
reflex/app.py
CHANGED
|
@@ -9,7 +9,6 @@ import copy
|
|
|
9
9
|
import functools
|
|
10
10
|
import inspect
|
|
11
11
|
import io
|
|
12
|
-
import json
|
|
13
12
|
import multiprocessing
|
|
14
13
|
import os
|
|
15
14
|
import platform
|
|
@@ -824,7 +823,7 @@ class App(MiddlewareMixin, LifespanMixin, Base):
|
|
|
824
823
|
for dep in deps:
|
|
825
824
|
if dep not in state.vars and dep not in state.backend_vars:
|
|
826
825
|
raise exceptions.VarDependencyError(
|
|
827
|
-
f"ComputedVar {var.
|
|
826
|
+
f"ComputedVar {var._var_name} on state {state.__name__} has an invalid dependency {dep}"
|
|
828
827
|
)
|
|
829
828
|
|
|
830
829
|
for substate in state.class_subclasses:
|
|
@@ -1532,9 +1531,8 @@ class EventNamespace(AsyncNamespace):
|
|
|
1532
1531
|
sid: The Socket.IO session id.
|
|
1533
1532
|
data: The event data.
|
|
1534
1533
|
"""
|
|
1535
|
-
fields = json.loads(data)
|
|
1536
1534
|
# Get the event.
|
|
1537
|
-
event = Event
|
|
1535
|
+
event = Event.parse_raw(data)
|
|
1538
1536
|
|
|
1539
1537
|
self.token_to_sid[event.token] = sid
|
|
1540
1538
|
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.9 compatibility when redis is used, we MUST add any decorator pages
|
|
18
|
+
# For py3.8 and 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,7 +110,7 @@ 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.
|
|
113
|
+
var_name = var._var_name.split(".")[-1]
|
|
114
114
|
new_field = ModelField.infer(
|
|
115
115
|
name=var_name,
|
|
116
116
|
value=default_value,
|
reflex/compiler/compiler.py
CHANGED
|
@@ -17,12 +17,12 @@ from reflex.components.component import (
|
|
|
17
17
|
StatefulComponent,
|
|
18
18
|
)
|
|
19
19
|
from reflex.config import get_config
|
|
20
|
+
from reflex.ivars.base import ImmutableVar, LiteralVar
|
|
20
21
|
from reflex.state import BaseState
|
|
21
22
|
from reflex.style import SYSTEM_COLOR_MODE
|
|
22
23
|
from reflex.utils.exec import is_prod_mode
|
|
23
24
|
from reflex.utils.imports import ImportVar
|
|
24
25
|
from reflex.utils.prerequisites import get_web_dir
|
|
25
|
-
from reflex.vars.base import LiteralVar, Var
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
def _compile_document_root(root: Component) -> str:
|
|
@@ -320,7 +320,7 @@ def _compile_tailwind(
|
|
|
320
320
|
def compile_document_root(
|
|
321
321
|
head_components: list[Component],
|
|
322
322
|
html_lang: Optional[str] = None,
|
|
323
|
-
html_custom_attrs: Optional[Dict[str, Union[
|
|
323
|
+
html_custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
|
|
324
324
|
) -> tuple[str, str]:
|
|
325
325
|
"""Compile the document root.
|
|
326
326
|
|
reflex/compiler/utils.py
CHANGED
|
@@ -7,8 +7,8 @@ from pathlib import Path
|
|
|
7
7
|
from typing import Any, Callable, Dict, Optional, Type, Union
|
|
8
8
|
from urllib.parse import urlparse
|
|
9
9
|
|
|
10
|
+
from reflex.ivars.base import ImmutableVar
|
|
10
11
|
from reflex.utils.prerequisites import get_web_dir
|
|
11
|
-
from reflex.vars.base import Var
|
|
12
12
|
|
|
13
13
|
try:
|
|
14
14
|
from pydantic.v1.fields import ModelField
|
|
@@ -268,7 +268,7 @@ def compile_custom_component(
|
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
# Concatenate the props.
|
|
271
|
-
props = [prop.
|
|
271
|
+
props = [prop._var_name for prop in component.get_prop_vars()]
|
|
272
272
|
|
|
273
273
|
# Compile the component.
|
|
274
274
|
return (
|
|
@@ -286,7 +286,7 @@ def compile_custom_component(
|
|
|
286
286
|
def create_document_root(
|
|
287
287
|
head_components: list[Component] | None = None,
|
|
288
288
|
html_lang: Optional[str] = None,
|
|
289
|
-
html_custom_attrs: Optional[Dict[str, Union[
|
|
289
|
+
html_custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
|
|
290
290
|
) -> Component:
|
|
291
291
|
"""Create the document root.
|
|
292
292
|
|
|
@@ -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.
|
|
5
|
+
from reflex.ivars.base import ImmutableVar
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class AppWrap(Fragment):
|
|
@@ -15,4 +15,4 @@ class AppWrap(Fragment):
|
|
|
15
15
|
Returns:
|
|
16
16
|
A new AppWrap component containing {children}.
|
|
17
17
|
"""
|
|
18
|
-
return super().create(
|
|
18
|
+
return super().create(ImmutableVar.create("children"))
|
|
@@ -7,8 +7,8 @@ from typing import Any, Callable, Dict, 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
|
|
10
11
|
from reflex.style import Style
|
|
11
|
-
from reflex.vars.base import Var
|
|
12
12
|
|
|
13
13
|
class AppWrap(Fragment):
|
|
14
14
|
@overload
|
|
@@ -21,41 +21,51 @@ class AppWrap(Fragment):
|
|
|
21
21
|
id: Optional[Any] = None,
|
|
22
22
|
class_name: Optional[Any] = None,
|
|
23
23
|
autofocus: Optional[bool] = None,
|
|
24
|
-
custom_attrs: Optional[Dict[str, Union[
|
|
25
|
-
on_blur: Optional[
|
|
26
|
-
|
|
24
|
+
custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
|
|
25
|
+
on_blur: Optional[
|
|
26
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
27
|
+
] = None,
|
|
28
|
+
on_click: Optional[
|
|
29
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
30
|
+
] = None,
|
|
27
31
|
on_context_menu: Optional[
|
|
28
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
32
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
29
33
|
] = None,
|
|
30
34
|
on_double_click: Optional[
|
|
31
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
35
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
36
|
+
] = None,
|
|
37
|
+
on_focus: Optional[
|
|
38
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
39
|
+
] = None,
|
|
40
|
+
on_mount: Optional[
|
|
41
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
32
42
|
] = None,
|
|
33
|
-
on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
34
|
-
on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
35
43
|
on_mouse_down: Optional[
|
|
36
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
44
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
37
45
|
] = None,
|
|
38
46
|
on_mouse_enter: Optional[
|
|
39
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
47
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
40
48
|
] = None,
|
|
41
49
|
on_mouse_leave: Optional[
|
|
42
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
50
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
43
51
|
] = None,
|
|
44
52
|
on_mouse_move: Optional[
|
|
45
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
53
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
46
54
|
] = None,
|
|
47
55
|
on_mouse_out: Optional[
|
|
48
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
56
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
49
57
|
] = None,
|
|
50
58
|
on_mouse_over: Optional[
|
|
51
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
59
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
52
60
|
] = None,
|
|
53
61
|
on_mouse_up: Optional[
|
|
54
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
62
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
63
|
+
] = None,
|
|
64
|
+
on_scroll: Optional[
|
|
65
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
55
66
|
] = None,
|
|
56
|
-
on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
57
67
|
on_unmount: Optional[
|
|
58
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
68
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
59
69
|
] = None,
|
|
60
70
|
**props,
|
|
61
71
|
) -> "AppWrap":
|
reflex/components/base/bare.py
CHANGED
|
@@ -7,7 +7,8 @@ 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.
|
|
10
|
+
from reflex.ivars.base import ImmutableVar
|
|
11
|
+
from reflex.vars import Var
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
class Bare(Component):
|
|
@@ -25,18 +26,18 @@ class Bare(Component):
|
|
|
25
26
|
Returns:
|
|
26
27
|
The component.
|
|
27
28
|
"""
|
|
28
|
-
if isinstance(contents,
|
|
29
|
+
if isinstance(contents, ImmutableVar):
|
|
29
30
|
return cls(contents=contents)
|
|
30
31
|
else:
|
|
31
32
|
contents = str(contents) if contents is not None else ""
|
|
32
33
|
return cls(contents=contents) # type: ignore
|
|
33
34
|
|
|
34
35
|
def _render(self) -> Tag:
|
|
35
|
-
if isinstance(self.contents,
|
|
36
|
+
if isinstance(self.contents, ImmutableVar):
|
|
36
37
|
return Tagless(contents=f"{{{str(self.contents)}}}")
|
|
37
38
|
return Tagless(contents=str(self.contents))
|
|
38
39
|
|
|
39
|
-
def _get_vars(self, include_children: bool = False) -> Iterator[
|
|
40
|
+
def _get_vars(self, include_children: bool = False) -> Iterator[ImmutableVar]:
|
|
40
41
|
"""Walk all Vars used in this component.
|
|
41
42
|
|
|
42
43
|
Args:
|
reflex/components/base/body.pyi
CHANGED
|
@@ -7,8 +7,8 @@ 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.base import Var
|
|
12
12
|
|
|
13
13
|
class Body(Component):
|
|
14
14
|
@overload
|
|
@@ -21,41 +21,51 @@ class Body(Component):
|
|
|
21
21
|
id: Optional[Any] = None,
|
|
22
22
|
class_name: Optional[Any] = None,
|
|
23
23
|
autofocus: Optional[bool] = None,
|
|
24
|
-
custom_attrs: Optional[Dict[str, Union[
|
|
25
|
-
on_blur: Optional[
|
|
26
|
-
|
|
24
|
+
custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
|
|
25
|
+
on_blur: Optional[
|
|
26
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
27
|
+
] = None,
|
|
28
|
+
on_click: Optional[
|
|
29
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
30
|
+
] = None,
|
|
27
31
|
on_context_menu: Optional[
|
|
28
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
32
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
29
33
|
] = None,
|
|
30
34
|
on_double_click: Optional[
|
|
31
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
35
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
36
|
+
] = None,
|
|
37
|
+
on_focus: Optional[
|
|
38
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
39
|
+
] = None,
|
|
40
|
+
on_mount: Optional[
|
|
41
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
32
42
|
] = None,
|
|
33
|
-
on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
34
|
-
on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
35
43
|
on_mouse_down: Optional[
|
|
36
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
44
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
37
45
|
] = None,
|
|
38
46
|
on_mouse_enter: Optional[
|
|
39
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
47
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
40
48
|
] = None,
|
|
41
49
|
on_mouse_leave: Optional[
|
|
42
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
50
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
43
51
|
] = None,
|
|
44
52
|
on_mouse_move: Optional[
|
|
45
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
53
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
46
54
|
] = None,
|
|
47
55
|
on_mouse_out: Optional[
|
|
48
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
56
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
49
57
|
] = None,
|
|
50
58
|
on_mouse_over: Optional[
|
|
51
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
59
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
52
60
|
] = None,
|
|
53
61
|
on_mouse_up: Optional[
|
|
54
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
62
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
63
|
+
] = None,
|
|
64
|
+
on_scroll: Optional[
|
|
65
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
55
66
|
] = None,
|
|
56
|
-
on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
|
|
57
67
|
on_unmount: Optional[
|
|
58
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
68
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
59
69
|
] = None,
|
|
60
70
|
**props,
|
|
61
71
|
) -> "Body":
|