reflex 0.5.0.post1__tar.gz → 0.5.1a1__tar.gz
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-0.5.0.post1 → reflex-0.5.1a1}/PKG-INFO +1 -1
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/pyproject.toml +1 -1
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/web/utils/state.js +7 -2
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/app.py +69 -50
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/base.py +5 -2
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/component.py +49 -13
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/__init__.py +7 -1
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/banner.py +79 -6
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/banner.pyi +130 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/cond.py +1 -1
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/debounce.py +2 -4
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/foreach.py +11 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/upload.py +9 -10
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/forms.py +12 -6
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/media.py +19 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/media.pyi +3 -1
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/gridjs/datatable.py +4 -2
- reflex-0.5.1a1/reflex/components/props.py +30 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/tabs.py +1 -1
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/sonner/toast.py +102 -35
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/sonner/toast.pyi +27 -14
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/config.py +5 -3
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/constants/compiler.py +3 -3
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/constants/installer.py +1 -1
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/event.py +38 -24
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/experimental/__init__.py +4 -0
- reflex-0.5.1a1/reflex/experimental/client_state.py +198 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/state.py +61 -21
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/style.py +3 -3
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/testing.py +28 -9
- reflex-0.5.1a1/reflex/utils/exceptions.py +77 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/format.py +73 -2
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/prerequisites.py +28 -18
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/processes.py +34 -4
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/telemetry.py +5 -5
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/types.py +16 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/vars.py +104 -61
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/vars.pyi +7 -6
- reflex-0.5.0.post1/reflex/utils/exceptions.py +0 -21
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/LICENSE +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/README.md +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/blank/code/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/blank/code/blank.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/.gitignore +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/assets/favicon.ico +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/assets/github.svg +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/assets/icon.svg +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/assets/logo.svg +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/assets/paneleft.svg +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/demo.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/pages/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/pages/chatapp.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/pages/datatable.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/pages/forms.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/pages/graphing.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/pages/home.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/sidebar.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/state.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/states/form_state.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/states/pie_state.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/styles.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/webui/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/webui/components/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/webui/components/chat.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/webui/components/loading_icon.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/webui/components/modal.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/webui/components/navbar.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/webui/components/sidebar.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/webui/state.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/apps/demo/code/webui/styles.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/custom_components/README.md.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/custom_components/__init__.py.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/custom_components/demo_app.py.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/custom_components/src.py.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/web/utils/context.js.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/web/.gitignore +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/web/jsconfig.json +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/web/next.config.js +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/web/postcss.config.js +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/web/styles/tailwind.css +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/web/utils/client_side_routing.js +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/web/utils/helpers/range.js +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/__init__.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/__main__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/admin.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/app_module_for_backend.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/compiler/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/compiler/compiler.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/compiler/templates.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/compiler/utils.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/app_wrap.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/app_wrap.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/bare.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/body.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/body.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/document.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/document.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/fragment.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/fragment.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/head.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/head.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/link.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/link.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/meta.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/meta.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/script.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/base/script.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/base.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/base.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/badge.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/badge.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/code.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/code.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/divider.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/divider.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/keyboard_key.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/keyboard_key.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/list.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/list.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/stat.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/stat.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/table.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/table.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/tag.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/datadisplay/tag.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/disclosure/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/disclosure/accordion.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/disclosure/accordion.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/disclosure/tabs.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/disclosure/tabs.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/disclosure/transition.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/disclosure/transition.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/disclosure/visuallyhidden.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/disclosure/visuallyhidden.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/feedback/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/feedback/alert.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/feedback/alert.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/feedback/circularprogress.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/feedback/circularprogress.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/feedback/progress.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/feedback/progress.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/feedback/skeleton.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/feedback/skeleton.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/feedback/spinner.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/feedback/spinner.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/button.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/button.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/checkbox.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/checkbox.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/colormodeswitch.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/colormodeswitch.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/date_picker.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/date_picker.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/date_time_picker.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/date_time_picker.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/editable.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/editable.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/email.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/email.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/form.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/form.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/iconbutton.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/iconbutton.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/input.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/input.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/multiselect.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/numberinput.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/numberinput.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/password.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/password.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/pininput.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/pininput.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/radio.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/radio.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/rangeslider.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/rangeslider.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/select.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/select.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/slider.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/slider.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/switch.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/switch.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/textarea.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/textarea.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/time_picker.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/forms/time_picker.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/aspect_ratio.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/aspect_ratio.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/box.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/box.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/card.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/card.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/center.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/center.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/container.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/container.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/flex.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/flex.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/grid.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/grid.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/spacer.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/spacer.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/stack.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/stack.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/wrap.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/layout/wrap.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/media/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/media/avatar.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/media/avatar.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/media/icon.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/media/icon.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/media/image.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/media/image.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/navigation/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/navigation/breadcrumb.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/navigation/breadcrumb.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/navigation/link.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/navigation/link.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/navigation/linkoverlay.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/navigation/linkoverlay.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/navigation/stepper.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/navigation/stepper.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/overlay/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/overlay/alertdialog.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/overlay/alertdialog.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/overlay/drawer.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/overlay/drawer.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/overlay/menu.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/overlay/menu.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/overlay/modal.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/overlay/modal.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/overlay/popover.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/overlay/popover.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/overlay/tooltip.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/overlay/tooltip.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/typography/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/typography/heading.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/typography/heading.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/typography/highlight.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/typography/highlight.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/typography/span.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/typography/span.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/typography/text.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/chakra/typography/text.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/client_side_routing.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/client_side_routing.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/colors.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/debounce.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/html.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/html.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/layout/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/match.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/responsive.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/core/upload.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/datadisplay/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/datadisplay/code.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/datadisplay/code.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/datadisplay/dataeditor.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/datadisplay/dataeditor.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/datadisplay/logo.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/constants/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/constants/html.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/constants/react.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/constants/reflex.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/element.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/element.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/base.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/base.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/forms.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/inline.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/inline.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/metadata.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/metadata.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/other.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/other.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/scripts.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/scripts.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/sectioning.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/sectioning.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/tables.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/tables.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/typography.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/el/elements/typography.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/gridjs/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/gridjs/datatable.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/literals.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/lucide/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/lucide/icon.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/lucide/icon.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/markdown/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/markdown/markdown.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/markdown/markdown.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/media/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/media/icon.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/moment/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/moment/moment.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/moment/moment.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/next/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/next/base.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/next/base.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/next/image.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/next/image.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/next/link.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/next/link.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/next/video.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/next/video.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/plotly/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/plotly/plotly.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/plotly/plotly.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/primitives/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/primitives/accordion.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/primitives/accordion.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/primitives/base.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/primitives/base.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/primitives/drawer.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/primitives/drawer.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/primitives/form.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/primitives/form.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/primitives/progress.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/primitives/progress.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/primitives/slider.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/primitives/slider.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/base.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/base.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/color_mode.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/color_mode.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/avatar.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/avatar.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/badge.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/badge.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/button.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/button.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/callout.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/callout.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/card.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/card.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/checkbox.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/checkbox.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/checkbox_cards.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/checkbox_group.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/context_menu.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/context_menu.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/data_list.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/data_list.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/dialog.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/dialog.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/hover_card.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/hover_card.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/icon_button.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/icon_button.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/inset.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/inset.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/popover.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/popover.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/progress.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/progress.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/radio.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/radio.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/radio_cards.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/radio_cards.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/radio_group.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/scroll_area.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/scroll_area.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/segmented_control.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/select.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/select.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/separator.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/separator.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/skeleton.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/skeleton.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/slider.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/slider.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/spinner.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/spinner.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/switch.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/switch.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/table.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/table.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/tabs.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/text_area.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/text_area.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/text_field.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/text_field.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/tooltip.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/components/tooltip.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/base.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/base.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/box.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/box.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/center.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/center.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/container.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/container.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/flex.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/flex.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/grid.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/grid.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/list.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/list.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/section.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/section.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/spacer.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/spacer.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/stack.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/layout/stack.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/typography/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/typography/base.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/typography/blockquote.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/typography/blockquote.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/typography/code.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/typography/code.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/typography/heading.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/typography/heading.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/typography/link.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/typography/link.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/typography/text.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/radix/themes/typography/text.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/react_player/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/react_player/audio.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/react_player/audio.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/react_player/react_player.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/react_player/react_player.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/react_player/video.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/react_player/video.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/recharts/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/recharts/cartesian.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/recharts/cartesian.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/recharts/charts.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/recharts/charts.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/recharts/general.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/recharts/general.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/recharts/polar.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/recharts/polar.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/recharts/recharts.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/recharts/recharts.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/sonner/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/suneditor/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/suneditor/editor.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/suneditor/editor.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/tags/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/tags/cond_tag.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/tags/iter_tag.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/tags/match_tag.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/tags/tag.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/components/tags/tagless.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/config.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/constants/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/constants/base.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/constants/base.pyi +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/constants/colors.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/constants/config.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/constants/custom_components.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/constants/event.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/constants/route.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/constants/style.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/custom_components/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/custom_components/custom_components.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/experimental/hooks.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/experimental/layout.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/experimental/misc.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/middleware/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/middleware/hydrate_middleware.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/middleware/middleware.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/model.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/page.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/reflex.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/route.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/__init__.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/build.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/compat.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/console.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/exec.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/export.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/imports.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/path_ops.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/pyi_generator.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/serializers.py +0 -0
- {reflex-0.5.0.post1 → reflex-0.5.1a1}/reflex/utils/watch.py +0 -0
|
@@ -126,8 +126,13 @@ export const applyDelta = (state, delta) => {
|
|
|
126
126
|
export const applyEvent = async (event, socket) => {
|
|
127
127
|
// Handle special events
|
|
128
128
|
if (event.name == "_redirect") {
|
|
129
|
-
if (event.payload.external)
|
|
130
|
-
|
|
129
|
+
if (event.payload.external) {
|
|
130
|
+
window.open(event.payload.path, "_blank");
|
|
131
|
+
} else if (event.payload.replace) {
|
|
132
|
+
Router.replace(event.payload.path);
|
|
133
|
+
} else {
|
|
134
|
+
Router.push(event.payload.path);
|
|
135
|
+
}
|
|
131
136
|
return false;
|
|
132
137
|
}
|
|
133
138
|
|
|
@@ -41,7 +41,6 @@ from reflex.base import Base
|
|
|
41
41
|
from reflex.compiler import compiler
|
|
42
42
|
from reflex.compiler import utils as compiler_utils
|
|
43
43
|
from reflex.compiler.compiler import ExecutorSafeFunctions
|
|
44
|
-
from reflex.components import connection_modal, connection_pulser
|
|
45
44
|
from reflex.components.base.app_wrap import AppWrap
|
|
46
45
|
from reflex.components.base.fragment import Fragment
|
|
47
46
|
from reflex.components.component import (
|
|
@@ -49,6 +48,7 @@ from reflex.components.component import (
|
|
|
49
48
|
ComponentStyle,
|
|
50
49
|
evaluate_style_namespaces,
|
|
51
50
|
)
|
|
51
|
+
from reflex.components.core import connection_pulser, connection_toaster
|
|
52
52
|
from reflex.components.core.client_side_routing import (
|
|
53
53
|
Default404Page,
|
|
54
54
|
wait_for_client_redirect,
|
|
@@ -91,7 +91,7 @@ def default_overlay_component() -> Component:
|
|
|
91
91
|
Returns:
|
|
92
92
|
The default overlay_component, which is a connection_modal.
|
|
93
93
|
"""
|
|
94
|
-
return Fragment.create(connection_pulser(),
|
|
94
|
+
return Fragment.create(connection_pulser(), connection_toaster())
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
class OverlayFragment(Fragment):
|
|
@@ -403,9 +403,12 @@ class App(Base):
|
|
|
403
403
|
The generated component.
|
|
404
404
|
|
|
405
405
|
Raises:
|
|
406
|
+
VarOperationTypeError: When an invalid component var related function is passed.
|
|
406
407
|
TypeError: When an invalid component function is passed.
|
|
407
408
|
exceptions.MatchTypeError: If the return types of match cases in rx.match are different.
|
|
408
409
|
"""
|
|
410
|
+
from reflex.utils.exceptions import VarOperationTypeError
|
|
411
|
+
|
|
409
412
|
try:
|
|
410
413
|
return component if isinstance(component, Component) else component()
|
|
411
414
|
except exceptions.MatchTypeError:
|
|
@@ -413,7 +416,7 @@ class App(Base):
|
|
|
413
416
|
except TypeError as e:
|
|
414
417
|
message = str(e)
|
|
415
418
|
if "BaseVar" in message or "ComputedVar" in message:
|
|
416
|
-
raise
|
|
419
|
+
raise VarOperationTypeError(
|
|
417
420
|
"You may be trying to use an invalid Python function on a state var. "
|
|
418
421
|
"When referencing a var inside your render code, only limited var operations are supported. "
|
|
419
422
|
"See the var operation docs here: https://reflex.dev/docs/vars/var-operations/"
|
|
@@ -555,11 +558,13 @@ class App(Base):
|
|
|
555
558
|
Based on conflicts that NextJS would throw if not intercepted.
|
|
556
559
|
|
|
557
560
|
Raises:
|
|
558
|
-
|
|
561
|
+
RouteValueError: exception showing which conflict exist with the route to be added
|
|
559
562
|
|
|
560
563
|
Args:
|
|
561
564
|
new_route: the route being newly added.
|
|
562
565
|
"""
|
|
566
|
+
from reflex.utils.exceptions import RouteValueError
|
|
567
|
+
|
|
563
568
|
if "[" not in new_route:
|
|
564
569
|
return
|
|
565
570
|
|
|
@@ -576,7 +581,7 @@ class App(Base):
|
|
|
576
581
|
):
|
|
577
582
|
if rw in segments and r != nr:
|
|
578
583
|
# If the slugs in the segments of both routes are not the same, then the route is invalid
|
|
579
|
-
raise
|
|
584
|
+
raise RouteValueError(
|
|
580
585
|
f"You cannot use different slug names for the same dynamic path in {route} and {new_route} ('{r}' != '{nr}')"
|
|
581
586
|
)
|
|
582
587
|
elif rw not in segments and r != nr:
|
|
@@ -755,8 +760,10 @@ class App(Base):
|
|
|
755
760
|
export: Whether to compile the app for export.
|
|
756
761
|
|
|
757
762
|
Raises:
|
|
758
|
-
|
|
763
|
+
ReflexRuntimeError: When any page uses state, but no rx.State subclass is defined.
|
|
759
764
|
"""
|
|
765
|
+
from reflex.utils.exceptions import ReflexRuntimeError
|
|
766
|
+
|
|
760
767
|
# Render a default 404 page if the user didn't supply one
|
|
761
768
|
if constants.Page404.SLUG not in self.pages:
|
|
762
769
|
self.add_custom_404_page()
|
|
@@ -837,7 +844,7 @@ class App(Base):
|
|
|
837
844
|
|
|
838
845
|
# Catch "static" apps (that do not define a rx.State subclass) which are trying to access rx.State.
|
|
839
846
|
if code_uses_state_contexts(stateful_components_code) and self.state is None:
|
|
840
|
-
raise
|
|
847
|
+
raise ReflexRuntimeError(
|
|
841
848
|
"To access rx.State in frontend components, at least one "
|
|
842
849
|
"subclass of rx.State must be defined in the app."
|
|
843
850
|
)
|
|
@@ -1060,50 +1067,60 @@ async def process(
|
|
|
1060
1067
|
headers: The client headers.
|
|
1061
1068
|
client_ip: The client_ip.
|
|
1062
1069
|
|
|
1070
|
+
Raises:
|
|
1071
|
+
ReflexError: If a reflex specific error occurs during processing the event.
|
|
1072
|
+
|
|
1063
1073
|
Yields:
|
|
1064
1074
|
The state updates after processing the event.
|
|
1065
1075
|
"""
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
state.
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
# `final=True` allows the frontend send more events immediately.
|
|
1097
|
-
yield StateUpdate(final=True)
|
|
1098
|
-
return
|
|
1076
|
+
from reflex.utils import telemetry
|
|
1077
|
+
from reflex.utils.exceptions import ReflexError
|
|
1078
|
+
|
|
1079
|
+
try:
|
|
1080
|
+
# Add request data to the state.
|
|
1081
|
+
router_data = event.router_data
|
|
1082
|
+
router_data.update(
|
|
1083
|
+
{
|
|
1084
|
+
constants.RouteVar.QUERY: format.format_query_params(event.router_data),
|
|
1085
|
+
constants.RouteVar.CLIENT_TOKEN: event.token,
|
|
1086
|
+
constants.RouteVar.SESSION_ID: sid,
|
|
1087
|
+
constants.RouteVar.HEADERS: headers,
|
|
1088
|
+
constants.RouteVar.CLIENT_IP: client_ip,
|
|
1089
|
+
}
|
|
1090
|
+
)
|
|
1091
|
+
# Get the state for the session exclusively.
|
|
1092
|
+
async with app.state_manager.modify_state(event.substate_token) as state:
|
|
1093
|
+
# re-assign only when the value is different
|
|
1094
|
+
if state.router_data != router_data:
|
|
1095
|
+
# assignment will recurse into substates and force recalculation of
|
|
1096
|
+
# dependent ComputedVar (dynamic route variables)
|
|
1097
|
+
state.router_data = router_data
|
|
1098
|
+
state.router = RouterData(router_data)
|
|
1099
|
+
|
|
1100
|
+
# Preprocess the event.
|
|
1101
|
+
update = await app._preprocess(state, event)
|
|
1102
|
+
|
|
1103
|
+
# If there was an update, yield it.
|
|
1104
|
+
if update is not None:
|
|
1105
|
+
yield update
|
|
1099
1106
|
|
|
1100
|
-
#
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1107
|
+
# Only process the event if there is no update.
|
|
1108
|
+
else:
|
|
1109
|
+
if app._process_background(state, event) is not None:
|
|
1110
|
+
# `final=True` allows the frontend send more events immediately.
|
|
1111
|
+
yield StateUpdate(final=True)
|
|
1112
|
+
return
|
|
1104
1113
|
|
|
1105
|
-
#
|
|
1106
|
-
|
|
1114
|
+
# Process the event synchronously.
|
|
1115
|
+
async for update in state._process(event):
|
|
1116
|
+
# Postprocess the event.
|
|
1117
|
+
update = await app._postprocess(state, event, update)
|
|
1118
|
+
|
|
1119
|
+
# Yield the update.
|
|
1120
|
+
yield update
|
|
1121
|
+
except ReflexError as ex:
|
|
1122
|
+
telemetry.send("error", context="backend", detail=str(ex))
|
|
1123
|
+
raise
|
|
1107
1124
|
|
|
1108
1125
|
|
|
1109
1126
|
async def ping() -> str:
|
|
@@ -1137,10 +1154,12 @@ def upload(app: App):
|
|
|
1137
1154
|
emitted by the upload handler.
|
|
1138
1155
|
|
|
1139
1156
|
Raises:
|
|
1140
|
-
|
|
1141
|
-
|
|
1157
|
+
UploadValueError: if there are no args with supported annotation.
|
|
1158
|
+
UploadTypeError: if a background task is used as the handler.
|
|
1142
1159
|
HTTPException: when the request does not include token / handler headers.
|
|
1143
1160
|
"""
|
|
1161
|
+
from reflex.utils.exceptions import UploadTypeError, UploadValueError
|
|
1162
|
+
|
|
1144
1163
|
token = request.headers.get("reflex-client-token")
|
|
1145
1164
|
handler = request.headers.get("reflex-event-handler")
|
|
1146
1165
|
|
|
@@ -1166,7 +1185,7 @@ def upload(app: App):
|
|
|
1166
1185
|
# check if there exists any handler args with annotation, List[UploadFile]
|
|
1167
1186
|
if isinstance(func, EventHandler):
|
|
1168
1187
|
if func.is_background:
|
|
1169
|
-
raise
|
|
1188
|
+
raise UploadTypeError(
|
|
1170
1189
|
f"@rx.background is not supported for upload handler `{handler}`.",
|
|
1171
1190
|
)
|
|
1172
1191
|
func = func.fn
|
|
@@ -1181,7 +1200,7 @@ def upload(app: App):
|
|
|
1181
1200
|
break
|
|
1182
1201
|
|
|
1183
1202
|
if not handler_upload_param:
|
|
1184
|
-
raise
|
|
1203
|
+
raise UploadValueError(
|
|
1185
1204
|
f"`{handler}` handler should have a parameter annotated as "
|
|
1186
1205
|
"List[rx.UploadFile]"
|
|
1187
1206
|
)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""Define the base Reflex class."""
|
|
2
|
+
|
|
2
3
|
from __future__ import annotations
|
|
3
4
|
|
|
4
5
|
import os
|
|
@@ -26,15 +27,17 @@ def validate_field_name(bases: List[Type["BaseModel"]], field_name: str) -> None
|
|
|
26
27
|
field_name: name of attribute
|
|
27
28
|
|
|
28
29
|
Raises:
|
|
29
|
-
|
|
30
|
+
VarNameError: If state var field shadows another in its parent state
|
|
30
31
|
"""
|
|
32
|
+
from reflex.utils.exceptions import VarNameError
|
|
33
|
+
|
|
31
34
|
reload = os.getenv(constants.RELOAD_CONFIG) == "True"
|
|
32
35
|
for base in bases:
|
|
33
36
|
try:
|
|
34
37
|
if not reload and getattr(base, field_name, None):
|
|
35
38
|
pass
|
|
36
39
|
except TypeError as te:
|
|
37
|
-
raise
|
|
40
|
+
raise VarNameError(
|
|
38
41
|
f'State var "{field_name}" in {base} has been shadowed by a substate var; '
|
|
39
42
|
f'use a different field name instead".'
|
|
40
43
|
) from te
|
|
@@ -241,7 +241,7 @@ class Component(BaseComponent, ABC):
|
|
|
241
241
|
"""
|
|
242
242
|
return {}
|
|
243
243
|
|
|
244
|
-
def add_hooks(self) -> list[str]:
|
|
244
|
+
def add_hooks(self) -> list[str | Var]:
|
|
245
245
|
"""Add hooks inside the component function.
|
|
246
246
|
|
|
247
247
|
Hooks are pieces of literal Javascript code that is inserted inside the
|
|
@@ -374,7 +374,7 @@ class Component(BaseComponent, ABC):
|
|
|
374
374
|
raise ValueError(
|
|
375
375
|
f"The {(comp_name := type(self).__name__)} does not take in an `{key}` event trigger. If {comp_name}"
|
|
376
376
|
f" is a third party component make sure to add `{key}` to the component's event triggers. "
|
|
377
|
-
f"visit https://reflex.dev/docs/wrapping-react/
|
|
377
|
+
f"visit https://reflex.dev/docs/wrapping-react/guide/#event-triggers for more info."
|
|
378
378
|
)
|
|
379
379
|
if key in triggers:
|
|
380
380
|
# Event triggers are bound to event chains.
|
|
@@ -731,6 +731,7 @@ class Component(BaseComponent, ABC):
|
|
|
731
731
|
# Import here to avoid circular imports.
|
|
732
732
|
from reflex.components.base.bare import Bare
|
|
733
733
|
from reflex.components.base.fragment import Fragment
|
|
734
|
+
from reflex.utils.exceptions import ComponentTypeError
|
|
734
735
|
|
|
735
736
|
# Translate deprecated props to new names.
|
|
736
737
|
new_prop_names = [
|
|
@@ -757,7 +758,7 @@ class Component(BaseComponent, ABC):
|
|
|
757
758
|
validate_children(child)
|
|
758
759
|
# Make sure the child is a valid type.
|
|
759
760
|
if not types._isinstance(child, ComponentChild):
|
|
760
|
-
raise
|
|
761
|
+
raise ComponentTypeError(
|
|
761
762
|
"Children of Reflex components must be other components, "
|
|
762
763
|
"state vars, or primitive Python types. "
|
|
763
764
|
f"Got child {child} of type {type(child)}.",
|
|
@@ -1264,11 +1265,20 @@ class Component(BaseComponent, ABC):
|
|
|
1264
1265
|
},
|
|
1265
1266
|
)
|
|
1266
1267
|
|
|
1268
|
+
other_imports = []
|
|
1267
1269
|
user_hooks = self._get_hooks()
|
|
1268
|
-
if
|
|
1269
|
-
|
|
1270
|
+
if (
|
|
1271
|
+
user_hooks is not None
|
|
1272
|
+
and isinstance(user_hooks, Var)
|
|
1273
|
+
and user_hooks._var_data is not None
|
|
1274
|
+
and user_hooks._var_data.imports
|
|
1275
|
+
):
|
|
1276
|
+
other_imports.append(user_hooks._var_data.imports)
|
|
1277
|
+
other_imports.extend(
|
|
1278
|
+
hook_imports for hook_imports in self._get_added_hooks().values()
|
|
1279
|
+
)
|
|
1270
1280
|
|
|
1271
|
-
return _imports
|
|
1281
|
+
return imports.merge_imports(_imports, *other_imports)
|
|
1272
1282
|
|
|
1273
1283
|
def _get_imports(self) -> imports.ImportDict:
|
|
1274
1284
|
"""Get all the libraries and fields that are used by the component.
|
|
@@ -1415,6 +1425,36 @@ class Component(BaseComponent, ABC):
|
|
|
1415
1425
|
**self._get_special_hooks(),
|
|
1416
1426
|
}
|
|
1417
1427
|
|
|
1428
|
+
def _get_added_hooks(self) -> dict[str, imports.ImportDict]:
|
|
1429
|
+
"""Get the hooks added via `add_hooks` method.
|
|
1430
|
+
|
|
1431
|
+
Returns:
|
|
1432
|
+
The deduplicated hooks and imports added by the component and parent components.
|
|
1433
|
+
"""
|
|
1434
|
+
code = {}
|
|
1435
|
+
|
|
1436
|
+
def extract_var_hooks(hook: Var):
|
|
1437
|
+
_imports = {}
|
|
1438
|
+
if hook._var_data is not None:
|
|
1439
|
+
for sub_hook in hook._var_data.hooks:
|
|
1440
|
+
code[sub_hook] = {}
|
|
1441
|
+
if hook._var_data.imports:
|
|
1442
|
+
_imports = hook._var_data.imports
|
|
1443
|
+
if str(hook) in code:
|
|
1444
|
+
code[str(hook)] = imports.merge_imports(code[str(hook)], _imports)
|
|
1445
|
+
else:
|
|
1446
|
+
code[str(hook)] = _imports
|
|
1447
|
+
|
|
1448
|
+
# Add the hook code from add_hooks for each parent class (this is reversed to preserve
|
|
1449
|
+
# the order of the hooks in the final output)
|
|
1450
|
+
for clz in reversed(tuple(self._iter_parent_classes_with_method("add_hooks"))):
|
|
1451
|
+
for hook in clz.add_hooks(self):
|
|
1452
|
+
if isinstance(hook, Var):
|
|
1453
|
+
extract_var_hooks(hook)
|
|
1454
|
+
else:
|
|
1455
|
+
code[hook] = {}
|
|
1456
|
+
return code
|
|
1457
|
+
|
|
1418
1458
|
def _get_hooks(self) -> str | None:
|
|
1419
1459
|
"""Get the React hooks for this component.
|
|
1420
1460
|
|
|
@@ -1453,11 +1493,7 @@ class Component(BaseComponent, ABC):
|
|
|
1453
1493
|
if hooks is not None:
|
|
1454
1494
|
code[hooks] = None
|
|
1455
1495
|
|
|
1456
|
-
|
|
1457
|
-
# the order of the hooks in the final output)
|
|
1458
|
-
for clz in reversed(tuple(self._iter_parent_classes_with_method("add_hooks"))):
|
|
1459
|
-
for hook in clz.add_hooks(self):
|
|
1460
|
-
code[hook] = None
|
|
1496
|
+
code.update(self._get_added_hooks())
|
|
1461
1497
|
|
|
1462
1498
|
# Add the hook code for the children.
|
|
1463
1499
|
for child in self.children:
|
|
@@ -2091,8 +2127,8 @@ class StatefulComponent(BaseComponent):
|
|
|
2091
2127
|
var_deps.extend(cls._get_hook_deps(hook))
|
|
2092
2128
|
memo_var_data = VarData.merge(
|
|
2093
2129
|
*[var._var_data for var in event_args],
|
|
2094
|
-
VarData(
|
|
2095
|
-
imports={"react":
|
|
2130
|
+
VarData(
|
|
2131
|
+
imports={"react": [ImportVar(tag="useCallback")]},
|
|
2096
2132
|
),
|
|
2097
2133
|
)
|
|
2098
2134
|
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
"""Core Reflex components."""
|
|
2
2
|
|
|
3
3
|
from . import layout as layout
|
|
4
|
-
from .banner import
|
|
4
|
+
from .banner import (
|
|
5
|
+
ConnectionBanner,
|
|
6
|
+
ConnectionModal,
|
|
7
|
+
ConnectionPulser,
|
|
8
|
+
ConnectionToaster,
|
|
9
|
+
)
|
|
5
10
|
from .colors import color
|
|
6
11
|
from .cond import Cond, color_mode_cond, cond
|
|
7
12
|
from .debounce import DebounceInput
|
|
@@ -26,6 +31,7 @@ from .upload import (
|
|
|
26
31
|
|
|
27
32
|
connection_banner = ConnectionBanner.create
|
|
28
33
|
connection_modal = ConnectionModal.create
|
|
34
|
+
connection_toaster = ConnectionToaster.create
|
|
29
35
|
connection_pulser = ConnectionPulser.create
|
|
30
36
|
debounce_input = DebounceInput.create
|
|
31
37
|
foreach = Foreach.create
|
|
@@ -16,8 +16,11 @@ from reflex.components.radix.themes.components.dialog import (
|
|
|
16
16
|
)
|
|
17
17
|
from reflex.components.radix.themes.layout import Flex
|
|
18
18
|
from reflex.components.radix.themes.typography.text import Text
|
|
19
|
+
from reflex.components.sonner.toast import Toaster, ToastProps
|
|
19
20
|
from reflex.constants import Dirs, Hooks, Imports
|
|
21
|
+
from reflex.constants.compiler import CompileVars
|
|
20
22
|
from reflex.utils import imports
|
|
23
|
+
from reflex.utils.serializers import serialize
|
|
21
24
|
from reflex.vars import Var, VarData
|
|
22
25
|
|
|
23
26
|
connect_error_var_data: VarData = VarData( # type: ignore
|
|
@@ -25,27 +28,38 @@ connect_error_var_data: VarData = VarData( # type: ignore
|
|
|
25
28
|
hooks={Hooks.EVENTS: None},
|
|
26
29
|
)
|
|
27
30
|
|
|
31
|
+
connect_errors: Var = Var.create_safe(
|
|
32
|
+
value=CompileVars.CONNECT_ERROR,
|
|
33
|
+
_var_is_local=True,
|
|
34
|
+
_var_is_string=False,
|
|
35
|
+
_var_data=connect_error_var_data,
|
|
36
|
+
)
|
|
37
|
+
|
|
28
38
|
connection_error: Var = Var.create_safe(
|
|
29
39
|
value="(connectErrors.length > 0) ? connectErrors[connectErrors.length - 1].message : ''",
|
|
30
40
|
_var_is_local=False,
|
|
31
41
|
_var_is_string=False,
|
|
32
|
-
|
|
42
|
+
_var_data=connect_error_var_data,
|
|
43
|
+
)
|
|
33
44
|
|
|
34
45
|
connection_errors_count: Var = Var.create_safe(
|
|
35
46
|
value="connectErrors.length",
|
|
36
47
|
_var_is_string=False,
|
|
37
48
|
_var_is_local=False,
|
|
38
|
-
|
|
49
|
+
_var_data=connect_error_var_data,
|
|
50
|
+
)
|
|
39
51
|
|
|
40
52
|
has_connection_errors: Var = Var.create_safe(
|
|
41
53
|
value="connectErrors.length > 0",
|
|
42
54
|
_var_is_string=False,
|
|
43
|
-
|
|
55
|
+
_var_data=connect_error_var_data,
|
|
56
|
+
).to(bool)
|
|
44
57
|
|
|
45
58
|
has_too_many_connection_errors: Var = Var.create_safe(
|
|
46
59
|
value="connectErrors.length >= 2",
|
|
47
60
|
_var_is_string=False,
|
|
48
|
-
|
|
61
|
+
_var_data=connect_error_var_data,
|
|
62
|
+
).to(bool)
|
|
49
63
|
|
|
50
64
|
|
|
51
65
|
class WebsocketTargetURL(Bare):
|
|
@@ -81,6 +95,64 @@ def default_connection_error() -> list[str | Var | Component]:
|
|
|
81
95
|
]
|
|
82
96
|
|
|
83
97
|
|
|
98
|
+
class ConnectionToaster(Toaster):
|
|
99
|
+
"""A connection toaster component."""
|
|
100
|
+
|
|
101
|
+
def add_hooks(self) -> list[str]:
|
|
102
|
+
"""Add the hooks for the connection toaster.
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
The hooks for the connection toaster.
|
|
106
|
+
"""
|
|
107
|
+
toast_id = "websocket-error"
|
|
108
|
+
target_url = WebsocketTargetURL.create()
|
|
109
|
+
props = ToastProps( # type: ignore
|
|
110
|
+
description=Var.create(
|
|
111
|
+
f"`Check if server is reachable at ${target_url}`",
|
|
112
|
+
_var_is_string=False,
|
|
113
|
+
_var_is_local=False,
|
|
114
|
+
),
|
|
115
|
+
close_button=True,
|
|
116
|
+
duration=120000,
|
|
117
|
+
id=toast_id,
|
|
118
|
+
)
|
|
119
|
+
hook = Var.create(
|
|
120
|
+
f"""
|
|
121
|
+
const toast_props = {serialize(props)};
|
|
122
|
+
const [userDismissed, setUserDismissed] = useState(false);
|
|
123
|
+
useEffect(() => {{
|
|
124
|
+
if ({has_too_many_connection_errors}) {{
|
|
125
|
+
if (!userDismissed) {{
|
|
126
|
+
toast.error(
|
|
127
|
+
`Cannot connect to server: {connection_error}.`,
|
|
128
|
+
{{...toast_props, onDismiss: () => setUserDismissed(true)}},
|
|
129
|
+
)
|
|
130
|
+
}}
|
|
131
|
+
}} else {{
|
|
132
|
+
toast.dismiss("{toast_id}");
|
|
133
|
+
setUserDismissed(false); // after reconnection reset dismissed state
|
|
134
|
+
}}
|
|
135
|
+
}}, [{connect_errors}]);"""
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
hook._var_data = VarData.merge( # type: ignore
|
|
139
|
+
connect_errors._var_data,
|
|
140
|
+
VarData(
|
|
141
|
+
imports={
|
|
142
|
+
"react": [
|
|
143
|
+
imports.ImportVar(tag="useEffect"),
|
|
144
|
+
imports.ImportVar(tag="useState"),
|
|
145
|
+
],
|
|
146
|
+
**target_url._get_imports(),
|
|
147
|
+
}
|
|
148
|
+
),
|
|
149
|
+
)
|
|
150
|
+
return [
|
|
151
|
+
Hooks.EVENTS,
|
|
152
|
+
hook, # type: ignore
|
|
153
|
+
]
|
|
154
|
+
|
|
155
|
+
|
|
84
156
|
class ConnectionBanner(Component):
|
|
85
157
|
"""A connection banner component."""
|
|
86
158
|
|
|
@@ -158,8 +230,8 @@ class WifiOffPulse(Icon):
|
|
|
158
230
|
size=props.pop("size", 32),
|
|
159
231
|
z_index=props.pop("z_index", 9999),
|
|
160
232
|
position=props.pop("position", "fixed"),
|
|
161
|
-
bottom=props.pop("botton", "
|
|
162
|
-
right=props.pop("right", "
|
|
233
|
+
bottom=props.pop("botton", "33px"),
|
|
234
|
+
right=props.pop("right", "33px"),
|
|
163
235
|
animation=Var.create(f"${{pulse}} 1s infinite", _var_is_string=True),
|
|
164
236
|
**props,
|
|
165
237
|
)
|
|
@@ -201,6 +273,7 @@ class ConnectionPulser(Div):
|
|
|
201
273
|
has_connection_errors,
|
|
202
274
|
WifiOffPulse.create(**props),
|
|
203
275
|
),
|
|
276
|
+
title=f"Connection Error: {connection_error}",
|
|
204
277
|
position="fixed",
|
|
205
278
|
width="100vw",
|
|
206
279
|
height="0",
|