reflex 0.3.5a1__tar.gz → 0.3.5a3__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.3.5a1 → reflex-0.3.5a3}/PKG-INFO +1 -1
- {reflex-0.3.5a1 → reflex-0.3.5a3}/pyproject.toml +1 -1
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/custom_component.js.jinja2 +3 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/utils/context.js.jinja2 +5 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/utils/state.js +9 -4
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/app.py +6 -5
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/app.pyi +1 -1
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/compiler/templates.py +1 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/compiler/utils.py +1 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/head.py +2 -2
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/head.pyi +4 -7
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/component.py +69 -18
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/input.py +3 -1
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/input.pyi +1 -1
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/charts.pyi +2 -5
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/general.py +2 -1
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/general.pyi +4 -6
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/recharts.py +4 -4
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/recharts.pyi +4 -7
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/cond.py +2 -2
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/foreach.py +3 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/icon.py +2 -2
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/icon.pyi +2 -2
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/markdown.py +19 -5
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/markdown.pyi +4 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/__init__.py +6 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/compiler.py +23 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/route.py +4 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/event.py +11 -1
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/middleware/hydrate_middleware.py +2 -8
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/state.py +21 -1
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/prerequisites.py +8 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/vars.py +23 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/LICENSE +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/README.md +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/blank/code/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/blank/code/blank.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/.gitignore +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/assets/favicon.ico +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/assets/github.svg +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/assets/icon.svg +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/assets/logo.svg +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/assets/paneleft.svg +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/demo.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/pages/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/pages/chatapp.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/pages/datatable.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/pages/forms.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/pages/graphing.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/pages/home.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/sidebar.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/state.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/states/form_state.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/states/pie_state.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/styles.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/components/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/components/chat.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/components/loading_icon.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/components/modal.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/components/navbar.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/components/sidebar.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/state.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/demo/code/webui/styles.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/README.md +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/assets/favicon.ico +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/assets/github.svg +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/assets/icon.svg +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/assets/logo.svg +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/assets/paneleft.svg +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/components/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/components/sidebar.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/pages/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/pages/dashboard.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/pages/index.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/pages/settings.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/sidebar.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/state.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/styles.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/templates/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/apps/sidebar/code/templates/template.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/app/rxconfig.py.jinja2 +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/package.json.jinja2 +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/_app.js.jinja2 +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/_document.js.jinja2 +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/component.js.jinja2 +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/index.js.jinja2 +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/stateful_components.js.jinja2 +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/pages/utils.js.jinja2 +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/styles/styles.css.jinja2 +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/tailwind.config.js.jinja2 +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/jinja/web/utils/theme.js.jinja2 +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/.gitignore +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/components/reflex/chakra_color_mode_provider.js +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/jsconfig.json +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/next.config.js +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/postcss.config.js +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/styles/tailwind.css +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/utils/client_side_routing.js +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/.templates/web/utils/helpers/range.js +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/__init__.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/__main__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/admin.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/base.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/compiler/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/compiler/compiler.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/app_wrap.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/app_wrap.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/bare.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/body.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/body.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/document.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/document.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/link.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/link.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/meta.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/meta.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/script.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/base/script.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/badge.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/badge.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/code.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/code.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/dataeditor.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/dataeditor.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/datatable.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/datatable.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/divider.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/divider.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/keyboard_key.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/keyboard_key.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/list.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/list.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/moment.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/moment.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/stat.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/stat.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/table.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/table.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/tag.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/datadisplay/tag.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/accordion.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/accordion.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/tabs.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/tabs.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/transition.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/transition.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/visuallyhidden.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/disclosure/visuallyhidden.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/constants/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/constants/html.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/constants/react.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/constants/reflex.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/element.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/element.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/base.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/base.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/forms.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/forms.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/inline.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/inline.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/media.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/media.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/metadata.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/metadata.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/other.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/other.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/scripts.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/scripts.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/sectioning.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/sectioning.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/tables.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/tables.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/typography.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/el/elements/typography.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/alert.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/alert.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/circularprogress.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/circularprogress.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/progress.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/progress.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/skeleton.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/skeleton.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/spinner.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/feedback/spinner.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/button.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/button.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/checkbox.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/checkbox.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/colormodeswitch.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/colormodeswitch.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/date_picker.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/date_picker.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/date_time_picker.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/date_time_picker.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/debounce.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/debounce.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/editable.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/editable.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/editor.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/editor.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/email.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/email.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/form.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/form.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/iconbutton.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/iconbutton.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/multiselect.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/numberinput.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/numberinput.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/password.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/password.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/pininput.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/pininput.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/radio.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/radio.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/rangeslider.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/rangeslider.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/select.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/select.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/slider.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/slider.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/switch.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/switch.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/textarea.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/textarea.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/upload.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/forms/upload.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/plotly.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/plotly.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/cartesian.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/cartesian.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/charts.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/polar.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/graphing/recharts/polar.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/aspect_ratio.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/aspect_ratio.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/box.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/box.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/card.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/card.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/center.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/center.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/container.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/container.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/flex.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/flex.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/fragment.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/fragment.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/grid.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/grid.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/html.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/html.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/responsive.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/spacer.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/spacer.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/stack.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/stack.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/wrap.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/layout/wrap.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/libs/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/libs/chakra.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/libs/chakra.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/libs/react_player.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/libs/react_player.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/literals.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/audio.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/audio.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/avatar.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/avatar.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/image.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/image.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/video.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/media/video.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/breadcrumb.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/breadcrumb.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/client_side_routing.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/client_side_routing.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/link.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/link.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/linkoverlay.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/linkoverlay.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/nextlink.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/nextlink.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/stepper.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/navigation/stepper.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/alertdialog.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/alertdialog.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/banner.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/banner.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/drawer.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/drawer.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/menu.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/menu.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/modal.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/modal.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/popover.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/popover.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/tooltip.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/overlay/tooltip.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/base.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/base.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/components.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/components.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/layout.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/layout.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/typography.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/radix/themes/typography.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/tags/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/tags/cond_tag.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/tags/iter_tag.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/tags/tag.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/tags/tagless.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/heading.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/heading.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/highlight.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/highlight.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/span.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/span.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/text.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/components/typography/text.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/config.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/config.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/base.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/config.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/event.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/installer.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/constants/style.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/middleware/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/middleware/middleware.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/model.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/page.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/page.pyi +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/reflex.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/route.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/style.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/testing.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/__init__.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/build.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/console.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/exceptions.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/exec.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/export.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/format.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/imports.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/path_ops.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/processes.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/serializers.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/telemetry.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/types.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/utils/watch.py +0 -0
- {reflex-0.3.5a1 → reflex-0.3.5a3}/reflex/vars.pyi +0 -0
|
@@ -23,10 +23,15 @@ export const clientStorage = {}
|
|
|
23
23
|
{% endif %}
|
|
24
24
|
|
|
25
25
|
{% if state_name %}
|
|
26
|
+
export const onLoadInternalEvent = () => [Event('{{state_name}}.{{const.on_load_internal}}')]
|
|
27
|
+
|
|
26
28
|
export const initialEvents = () => [
|
|
27
29
|
Event('{{state_name}}.{{const.hydrate}}', hydrateClientStorage(clientStorage)),
|
|
30
|
+
...onLoadInternalEvent()
|
|
28
31
|
]
|
|
29
32
|
{% else %}
|
|
33
|
+
export const onLoadInternalEvent = () => []
|
|
34
|
+
|
|
30
35
|
export const initialEvents = () => []
|
|
31
36
|
{% endif %}
|
|
32
37
|
|
|
@@ -6,7 +6,7 @@ import env from "env.json";
|
|
|
6
6
|
import Cookies from "universal-cookie";
|
|
7
7
|
import { useEffect, useReducer, useRef, useState } from "react";
|
|
8
8
|
import Router, { useRouter } from "next/router";
|
|
9
|
-
import { initialEvents, initialState } from "utils/context.js"
|
|
9
|
+
import { initialEvents, initialState, onLoadInternalEvent } from "utils/context.js"
|
|
10
10
|
|
|
11
11
|
// Endpoint URLs.
|
|
12
12
|
const EVENTURL = env.EVENT
|
|
@@ -529,10 +529,15 @@ export const useEventLoop = (
|
|
|
529
529
|
}
|
|
530
530
|
|
|
531
531
|
const sentHydrate = useRef(false); // Avoid double-hydrate due to React strict-mode
|
|
532
|
-
// initial state hydrate
|
|
533
532
|
useEffect(() => {
|
|
534
533
|
if (router.isReady && !sentHydrate.current) {
|
|
535
|
-
|
|
534
|
+
const events = initial_events()
|
|
535
|
+
addEvents(events.map((e) => (
|
|
536
|
+
{
|
|
537
|
+
...e,
|
|
538
|
+
router_data: (({ pathname, query, asPath }) => ({ pathname, query, asPath }))(router)
|
|
539
|
+
}
|
|
540
|
+
)))
|
|
536
541
|
sentHydrate.current = true
|
|
537
542
|
}
|
|
538
543
|
}, [router.isReady])
|
|
@@ -560,7 +565,7 @@ export const useEventLoop = (
|
|
|
560
565
|
|
|
561
566
|
// Route after the initial page hydration.
|
|
562
567
|
useEffect(() => {
|
|
563
|
-
const change_complete = () => addEvents(
|
|
568
|
+
const change_complete = () => addEvents(onLoadInternalEvent())
|
|
564
569
|
router.events.on('routeChangeComplete', change_complete)
|
|
565
570
|
return () => {
|
|
566
571
|
router.events.off('routeChangeComplete', change_complete)
|
|
@@ -161,11 +161,12 @@ class App(Base):
|
|
|
161
161
|
"rx.BaseState cannot be subclassed multiple times. use rx.State instead"
|
|
162
162
|
)
|
|
163
163
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
164
|
+
if "state" in kwargs:
|
|
165
|
+
console.deprecate(
|
|
166
|
+
feature_name="`state` argument for App()",
|
|
167
|
+
reason="due to all `rx.State` subclasses being inferred.",
|
|
168
|
+
deprecation_version="0.3.5",
|
|
169
|
+
removal_version="0.4.0",
|
|
169
170
|
)
|
|
170
171
|
self.state = State
|
|
171
172
|
# Get the config
|
|
@@ -125,7 +125,7 @@ class App(Base):
|
|
|
125
125
|
self, state: State, event: Event
|
|
126
126
|
) -> asyncio.Task | None: ...
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
def process(
|
|
129
129
|
app: App, event: Event, sid: str, headers: Dict, client_ip: str
|
|
130
130
|
) -> AsyncIterator[StateUpdate]: ...
|
|
131
131
|
async def ping() -> str: ...
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""The head component."""
|
|
2
2
|
|
|
3
|
-
from reflex.components.component import Component
|
|
3
|
+
from reflex.components.component import Component, MemoizationLeaf
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
class NextHeadLib(Component):
|
|
@@ -9,7 +9,7 @@ class NextHeadLib(Component):
|
|
|
9
9
|
library = "next/head"
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
class Head(NextHeadLib):
|
|
12
|
+
class Head(NextHeadLib, MemoizationLeaf):
|
|
13
13
|
"""Head Component."""
|
|
14
14
|
|
|
15
15
|
tag = "NextHead"
|
|
@@ -7,7 +7,7 @@ from typing import Any, Dict, Literal, Optional, Union, overload
|
|
|
7
7
|
from reflex.vars import Var, BaseVar, ComputedVar
|
|
8
8
|
from reflex.event import EventChain, EventHandler, EventSpec
|
|
9
9
|
from reflex.style import Style
|
|
10
|
-
from reflex.components.component import Component
|
|
10
|
+
from reflex.components.component import Component, MemoizationLeaf
|
|
11
11
|
|
|
12
12
|
class NextHeadLib(Component):
|
|
13
13
|
@overload
|
|
@@ -88,7 +88,7 @@ class NextHeadLib(Component):
|
|
|
88
88
|
"""
|
|
89
89
|
...
|
|
90
90
|
|
|
91
|
-
class Head(NextHeadLib):
|
|
91
|
+
class Head(NextHeadLib, MemoizationLeaf):
|
|
92
92
|
@overload
|
|
93
93
|
@classmethod
|
|
94
94
|
def create( # type: ignore
|
|
@@ -147,7 +147,7 @@ class Head(NextHeadLib):
|
|
|
147
147
|
] = None,
|
|
148
148
|
**props
|
|
149
149
|
) -> "Head":
|
|
150
|
-
"""Create
|
|
150
|
+
"""Create a new memoization leaf component.
|
|
151
151
|
|
|
152
152
|
Args:
|
|
153
153
|
*children: The children of the component.
|
|
@@ -160,9 +160,6 @@ class Head(NextHeadLib):
|
|
|
160
160
|
**props: The props of the component.
|
|
161
161
|
|
|
162
162
|
Returns:
|
|
163
|
-
The
|
|
164
|
-
|
|
165
|
-
Raises:
|
|
166
|
-
TypeError: If an invalid child is passed.
|
|
163
|
+
The memoization leaf
|
|
167
164
|
"""
|
|
168
165
|
...
|
|
@@ -23,7 +23,15 @@ from typing import (
|
|
|
23
23
|
from reflex.base import Base
|
|
24
24
|
from reflex.compiler.templates import STATEFUL_COMPONENT
|
|
25
25
|
from reflex.components.tags import Tag
|
|
26
|
-
from reflex.constants import
|
|
26
|
+
from reflex.constants import (
|
|
27
|
+
Dirs,
|
|
28
|
+
EventTriggers,
|
|
29
|
+
Hooks,
|
|
30
|
+
Imports,
|
|
31
|
+
MemoizationDisposition,
|
|
32
|
+
MemoizationMode,
|
|
33
|
+
PageNames,
|
|
34
|
+
)
|
|
27
35
|
from reflex.event import (
|
|
28
36
|
EventChain,
|
|
29
37
|
EventHandler,
|
|
@@ -150,6 +158,9 @@ class Component(BaseComponent, ABC):
|
|
|
150
158
|
# custom attribute
|
|
151
159
|
custom_attrs: Dict[str, Union[Var, str]] = {}
|
|
152
160
|
|
|
161
|
+
# When to memoize this component and its children.
|
|
162
|
+
_memoization_mode: MemoizationMode = MemoizationMode()
|
|
163
|
+
|
|
153
164
|
@classmethod
|
|
154
165
|
def __init_subclass__(cls, **kwargs):
|
|
155
166
|
"""Set default properties.
|
|
@@ -1353,20 +1364,29 @@ class StatefulComponent(BaseComponent):
|
|
|
1353
1364
|
"""
|
|
1354
1365
|
from reflex.components.layout.foreach import Foreach
|
|
1355
1366
|
|
|
1367
|
+
if component._memoization_mode.disposition == MemoizationDisposition.NEVER:
|
|
1368
|
+
# Never memoize this component.
|
|
1369
|
+
return None
|
|
1370
|
+
|
|
1356
1371
|
if component.tag is None:
|
|
1357
1372
|
# Only memoize components with a tag.
|
|
1358
1373
|
return None
|
|
1359
1374
|
|
|
1360
1375
|
# If _var_data is found in this component, it is a candidate for auto-memoization.
|
|
1361
|
-
|
|
1376
|
+
should_memoize = False
|
|
1362
1377
|
|
|
1363
|
-
#
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
has_var_data = True
|
|
1367
|
-
break
|
|
1378
|
+
# If the component requests to be memoized, then ignore other checks.
|
|
1379
|
+
if component._memoization_mode.disposition == MemoizationDisposition.ALWAYS:
|
|
1380
|
+
should_memoize = True
|
|
1368
1381
|
|
|
1369
|
-
if not
|
|
1382
|
+
if not should_memoize:
|
|
1383
|
+
# Determine if any Vars have associated data.
|
|
1384
|
+
for prop_var in component._get_vars():
|
|
1385
|
+
if prop_var._var_data:
|
|
1386
|
+
should_memoize = True
|
|
1387
|
+
break
|
|
1388
|
+
|
|
1389
|
+
if not should_memoize:
|
|
1370
1390
|
# Check for special-cases in child components.
|
|
1371
1391
|
for child in component.children:
|
|
1372
1392
|
# Skip BaseComponent and StatefulComponent children.
|
|
@@ -1374,14 +1394,14 @@ class StatefulComponent(BaseComponent):
|
|
|
1374
1394
|
continue
|
|
1375
1395
|
# Always consider Foreach something that must be memoized by the parent.
|
|
1376
1396
|
if isinstance(child, Foreach):
|
|
1377
|
-
|
|
1397
|
+
should_memoize = True
|
|
1378
1398
|
break
|
|
1379
1399
|
child = cls._child_var(child)
|
|
1380
1400
|
if isinstance(child, Var) and child._var_data:
|
|
1381
|
-
|
|
1401
|
+
should_memoize = True
|
|
1382
1402
|
break
|
|
1383
1403
|
|
|
1384
|
-
if
|
|
1404
|
+
if should_memoize or component.event_triggers:
|
|
1385
1405
|
# Render the component to determine tag+hash based on component code.
|
|
1386
1406
|
tag_name = cls._get_tag_name(component)
|
|
1387
1407
|
if tag_name is None:
|
|
@@ -1643,15 +1663,46 @@ class StatefulComponent(BaseComponent):
|
|
|
1643
1663
|
Returns:
|
|
1644
1664
|
The memoized component tree.
|
|
1645
1665
|
"""
|
|
1646
|
-
from reflex.components.layout.foreach import Foreach
|
|
1647
|
-
|
|
1648
|
-
# Foreach must be memoized as a single component to retain index Var context.
|
|
1649
|
-
if not isinstance(component, Foreach):
|
|
1650
|
-
component.children = [
|
|
1651
|
-
cls.compile_from(child) for child in component.children
|
|
1652
|
-
]
|
|
1653
1666
|
if isinstance(component, Component):
|
|
1667
|
+
if component._memoization_mode.recursive:
|
|
1668
|
+
# Recursively memoize stateful children (default).
|
|
1669
|
+
component.children = [
|
|
1670
|
+
cls.compile_from(child) for child in component.children
|
|
1671
|
+
]
|
|
1672
|
+
# Memoize this component if it depends on state.
|
|
1654
1673
|
stateful_component = cls.create(component)
|
|
1655
1674
|
if stateful_component is not None:
|
|
1656
1675
|
return stateful_component
|
|
1657
1676
|
return component
|
|
1677
|
+
|
|
1678
|
+
|
|
1679
|
+
class MemoizationLeaf(Component):
|
|
1680
|
+
"""A component that does not separately memoize its children.
|
|
1681
|
+
|
|
1682
|
+
Any component which depends on finding the exact names of children
|
|
1683
|
+
components within it, should be a memoization leaf so the compiler
|
|
1684
|
+
does not replace the provided child tags with memoized tags.
|
|
1685
|
+
|
|
1686
|
+
During creation, a memoization leaf will mark itself as wanting to be
|
|
1687
|
+
memoized if any of its children return any hooks.
|
|
1688
|
+
"""
|
|
1689
|
+
|
|
1690
|
+
_memoization_mode = MemoizationMode(recursive=False)
|
|
1691
|
+
|
|
1692
|
+
@classmethod
|
|
1693
|
+
def create(cls, *children, **props) -> Component:
|
|
1694
|
+
"""Create a new memoization leaf component.
|
|
1695
|
+
|
|
1696
|
+
Args:
|
|
1697
|
+
*children: The children of the component.
|
|
1698
|
+
**props: The props of the component.
|
|
1699
|
+
|
|
1700
|
+
Returns:
|
|
1701
|
+
The memoization leaf
|
|
1702
|
+
"""
|
|
1703
|
+
comp = super().create(*children, **props)
|
|
1704
|
+
if comp.get_hooks():
|
|
1705
|
+
comp._memoization_mode = cls._memoization_mode.copy(
|
|
1706
|
+
update={"disposition": MemoizationDisposition.ALWAYS}
|
|
1707
|
+
)
|
|
1708
|
+
return comp
|
|
@@ -9,7 +9,7 @@ from reflex.components.libs.chakra import (
|
|
|
9
9
|
LiteralButtonSize,
|
|
10
10
|
LiteralInputVariant,
|
|
11
11
|
)
|
|
12
|
-
from reflex.constants import EventTriggers
|
|
12
|
+
from reflex.constants import EventTriggers, MemoizationMode
|
|
13
13
|
from reflex.utils import imports
|
|
14
14
|
from reflex.vars import Var
|
|
15
15
|
|
|
@@ -107,6 +107,8 @@ class InputGroup(ChakraComponent):
|
|
|
107
107
|
|
|
108
108
|
tag = "InputGroup"
|
|
109
109
|
|
|
110
|
+
_memoization_mode = MemoizationMode(recursive=False)
|
|
111
|
+
|
|
110
112
|
|
|
111
113
|
class InputLeftAddon(ChakraComponent):
|
|
112
114
|
"""The InputLeftAddon component is a component that is used to add an addon to the left of an input."""
|
|
@@ -15,7 +15,7 @@ from reflex.components.libs.chakra import (
|
|
|
15
15
|
LiteralButtonSize,
|
|
16
16
|
LiteralInputVariant,
|
|
17
17
|
)
|
|
18
|
-
from reflex.constants import EventTriggers
|
|
18
|
+
from reflex.constants import EventTriggers, MemoizationMode
|
|
19
19
|
from reflex.utils import imports
|
|
20
20
|
from reflex.vars import Var
|
|
21
21
|
|
|
@@ -770,7 +770,7 @@ class FunnelChart(RechartsCharts):
|
|
|
770
770
|
] = None,
|
|
771
771
|
**props
|
|
772
772
|
) -> "FunnelChart":
|
|
773
|
-
"""Create
|
|
773
|
+
"""Create a new memoization leaf component.
|
|
774
774
|
|
|
775
775
|
Args:
|
|
776
776
|
*children: The children of the component.
|
|
@@ -791,10 +791,7 @@ class FunnelChart(RechartsCharts):
|
|
|
791
791
|
**props: The props of the component.
|
|
792
792
|
|
|
793
793
|
Returns:
|
|
794
|
-
The
|
|
795
|
-
|
|
796
|
-
Raises:
|
|
797
|
-
TypeError: If an invalid child is passed.
|
|
794
|
+
The memoization leaf
|
|
798
795
|
"""
|
|
799
796
|
...
|
|
800
797
|
|
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
|
|
4
4
|
from typing import Any, Dict, List, Union
|
|
5
5
|
|
|
6
|
+
from reflex.components.component import MemoizationLeaf
|
|
6
7
|
from reflex.constants import EventTriggers
|
|
7
8
|
from reflex.vars import Var
|
|
8
9
|
|
|
@@ -16,7 +17,7 @@ from .recharts import (
|
|
|
16
17
|
)
|
|
17
18
|
|
|
18
19
|
|
|
19
|
-
class ResponsiveContainer(Recharts):
|
|
20
|
+
class ResponsiveContainer(Recharts, MemoizationLeaf):
|
|
20
21
|
"""A base class for responsive containers in Recharts."""
|
|
21
22
|
|
|
22
23
|
tag = "ResponsiveContainer"
|
|
@@ -8,6 +8,7 @@ from reflex.vars import Var, BaseVar, ComputedVar
|
|
|
8
8
|
from reflex.event import EventChain, EventHandler, EventSpec
|
|
9
9
|
from reflex.style import Style
|
|
10
10
|
from typing import Any, Dict, List, Union
|
|
11
|
+
from reflex.components.component import MemoizationLeaf
|
|
11
12
|
from reflex.constants import EventTriggers
|
|
12
13
|
from reflex.vars import Var
|
|
13
14
|
from .recharts import (
|
|
@@ -19,7 +20,7 @@ from .recharts import (
|
|
|
19
20
|
Recharts,
|
|
20
21
|
)
|
|
21
22
|
|
|
22
|
-
class ResponsiveContainer(Recharts):
|
|
23
|
+
class ResponsiveContainer(Recharts, MemoizationLeaf):
|
|
23
24
|
@overload
|
|
24
25
|
@classmethod
|
|
25
26
|
def create( # type: ignore
|
|
@@ -84,7 +85,7 @@ class ResponsiveContainer(Recharts):
|
|
|
84
85
|
] = None,
|
|
85
86
|
**props
|
|
86
87
|
) -> "ResponsiveContainer":
|
|
87
|
-
"""Create
|
|
88
|
+
"""Create a new memoization leaf component.
|
|
88
89
|
|
|
89
90
|
Args:
|
|
90
91
|
*children: The children of the component.
|
|
@@ -103,10 +104,7 @@ class ResponsiveContainer(Recharts):
|
|
|
103
104
|
**props: The props of the component.
|
|
104
105
|
|
|
105
106
|
Returns:
|
|
106
|
-
The
|
|
107
|
-
|
|
108
|
-
Raises:
|
|
109
|
-
TypeError: If an invalid child is passed.
|
|
107
|
+
The memoization leaf
|
|
110
108
|
"""
|
|
111
109
|
...
|
|
112
110
|
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"""A component that wraps a recharts lib."""
|
|
2
2
|
from typing import Literal
|
|
3
3
|
|
|
4
|
-
from reflex.components.component import Component, NoSSRComponent
|
|
4
|
+
from reflex.components.component import Component, MemoizationLeaf, NoSSRComponent
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
class Recharts(Component):
|
|
8
|
-
"""A component that wraps a
|
|
8
|
+
"""A component that wraps a recharts lib."""
|
|
9
9
|
|
|
10
10
|
library = "recharts@2.8.0"
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
class RechartsCharts(NoSSRComponent):
|
|
14
|
-
"""A component that wraps a
|
|
13
|
+
class RechartsCharts(NoSSRComponent, MemoizationLeaf):
|
|
14
|
+
"""A component that wraps a recharts lib."""
|
|
15
15
|
|
|
16
16
|
library = "recharts@2.8.0"
|
|
17
17
|
|
|
@@ -8,7 +8,7 @@ from reflex.vars import Var, BaseVar, ComputedVar
|
|
|
8
8
|
from reflex.event import EventChain, EventHandler, EventSpec
|
|
9
9
|
from reflex.style import Style
|
|
10
10
|
from typing import Literal
|
|
11
|
-
from reflex.components.component import Component, NoSSRComponent
|
|
11
|
+
from reflex.components.component import Component, MemoizationLeaf, NoSSRComponent
|
|
12
12
|
|
|
13
13
|
class Recharts(Component):
|
|
14
14
|
@overload
|
|
@@ -89,7 +89,7 @@ class Recharts(Component):
|
|
|
89
89
|
"""
|
|
90
90
|
...
|
|
91
91
|
|
|
92
|
-
class RechartsCharts(NoSSRComponent):
|
|
92
|
+
class RechartsCharts(NoSSRComponent, MemoizationLeaf):
|
|
93
93
|
@overload
|
|
94
94
|
@classmethod
|
|
95
95
|
def create( # type: ignore
|
|
@@ -148,7 +148,7 @@ class RechartsCharts(NoSSRComponent):
|
|
|
148
148
|
] = None,
|
|
149
149
|
**props
|
|
150
150
|
) -> "RechartsCharts":
|
|
151
|
-
"""Create
|
|
151
|
+
"""Create a new memoization leaf component.
|
|
152
152
|
|
|
153
153
|
Args:
|
|
154
154
|
*children: The children of the component.
|
|
@@ -161,10 +161,7 @@ class RechartsCharts(NoSSRComponent):
|
|
|
161
161
|
**props: The props of the component.
|
|
162
162
|
|
|
163
163
|
Returns:
|
|
164
|
-
The
|
|
165
|
-
|
|
166
|
-
Raises:
|
|
167
|
-
TypeError: If an invalid child is passed.
|
|
164
|
+
The memoization leaf
|
|
168
165
|
"""
|
|
169
166
|
...
|
|
170
167
|
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
|
|
4
4
|
from typing import Any, Dict, Optional, overload
|
|
5
5
|
|
|
6
|
-
from reflex.components.component import BaseComponent, Component
|
|
6
|
+
from reflex.components.component import BaseComponent, Component, MemoizationLeaf
|
|
7
7
|
from reflex.components.layout.fragment import Fragment
|
|
8
8
|
from reflex.components.tags import CondTag, Tag
|
|
9
9
|
from reflex.constants import Dirs
|
|
@@ -15,7 +15,7 @@ _IS_TRUE_IMPORT = {
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
class Cond(
|
|
18
|
+
class Cond(MemoizationLeaf):
|
|
19
19
|
"""Render one of two components based on a condition."""
|
|
20
20
|
|
|
21
21
|
# The cond to determine which component to render.
|
|
@@ -8,12 +8,15 @@ from typing import Any, Callable, Iterable
|
|
|
8
8
|
from reflex.components.component import Component
|
|
9
9
|
from reflex.components.layout.fragment import Fragment
|
|
10
10
|
from reflex.components.tags import IterTag
|
|
11
|
+
from reflex.constants import MemoizationMode
|
|
11
12
|
from reflex.vars import Var
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
class Foreach(Component):
|
|
15
16
|
"""A component that takes in an iterable and a render function and renders a list of components."""
|
|
16
17
|
|
|
18
|
+
_memoization_mode = MemoizationMode(recursive=False)
|
|
19
|
+
|
|
17
20
|
# The iterable to create components from.
|
|
18
21
|
iterable: Var[Iterable]
|
|
19
22
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"""An icon component."""
|
|
2
2
|
from typing import List
|
|
3
3
|
|
|
4
|
-
from reflex.components.
|
|
4
|
+
from reflex.components.libs.chakra import ChakraComponent
|
|
5
5
|
from reflex.utils import format
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
class ChakraIconComponent(
|
|
8
|
+
class ChakraIconComponent(ChakraComponent):
|
|
9
9
|
"""A component that wraps a Chakra icon component."""
|
|
10
10
|
|
|
11
11
|
library = "@chakra-ui/icons@2.0.19"
|
|
@@ -8,10 +8,10 @@ from reflex.vars import Var, BaseVar, ComputedVar
|
|
|
8
8
|
from reflex.event import EventChain, EventHandler, EventSpec
|
|
9
9
|
from reflex.style import Style
|
|
10
10
|
from typing import List
|
|
11
|
-
from reflex.components.
|
|
11
|
+
from reflex.components.libs.chakra import ChakraComponent
|
|
12
12
|
from reflex.utils import format
|
|
13
13
|
|
|
14
|
-
class ChakraIconComponent(
|
|
14
|
+
class ChakraIconComponent(ChakraComponent):
|
|
15
15
|
@overload
|
|
16
16
|
@classmethod
|
|
17
17
|
def create( # type: ignore
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import textwrap
|
|
6
|
+
from functools import lru_cache
|
|
6
7
|
from hashlib import md5
|
|
7
8
|
from typing import Any, Callable, Dict, Union
|
|
8
9
|
|
|
@@ -35,6 +36,7 @@ _REHYPE_PLUGINS = Var.create_safe([_REHYPE_KATEX, _REHYPE_RAW])
|
|
|
35
36
|
|
|
36
37
|
|
|
37
38
|
# Component Mapping
|
|
39
|
+
@lru_cache
|
|
38
40
|
def get_base_component_map() -> dict[str, Callable]:
|
|
39
41
|
"""Get the base component map.
|
|
40
42
|
|
|
@@ -89,6 +91,9 @@ class Markdown(Component):
|
|
|
89
91
|
# Custom styles for the markdown (deprecated in v0.2.9).
|
|
90
92
|
custom_styles: Dict[str, Any] = {}
|
|
91
93
|
|
|
94
|
+
# The hash of the component map, generated at create() time.
|
|
95
|
+
component_map_hash: str = ""
|
|
96
|
+
|
|
92
97
|
@classmethod
|
|
93
98
|
def create(cls, *children, **props) -> Component:
|
|
94
99
|
"""Create a markdown component.
|
|
@@ -124,7 +129,12 @@ class Markdown(Component):
|
|
|
124
129
|
src = textwrap.dedent(src)
|
|
125
130
|
|
|
126
131
|
# Create the component.
|
|
127
|
-
return super().create(
|
|
132
|
+
return super().create(
|
|
133
|
+
src,
|
|
134
|
+
component_map=component_map,
|
|
135
|
+
component_map_hash=cls._component_map_hash(component_map),
|
|
136
|
+
**props,
|
|
137
|
+
)
|
|
128
138
|
|
|
129
139
|
def get_custom_components(
|
|
130
140
|
self, seen: set[str] | None = None
|
|
@@ -264,11 +274,15 @@ class Markdown(Component):
|
|
|
264
274
|
|
|
265
275
|
return components
|
|
266
276
|
|
|
267
|
-
|
|
268
|
-
|
|
277
|
+
@staticmethod
|
|
278
|
+
def _component_map_hash(component_map) -> str:
|
|
279
|
+
inp = str(
|
|
280
|
+
{tag: component(_MOCK_ARG) for tag, component in component_map.items()}
|
|
281
|
+
).encode()
|
|
282
|
+
return md5(inp).hexdigest()
|
|
269
283
|
|
|
270
284
|
def _get_component_map_name(self) -> str:
|
|
271
|
-
return f"ComponentMap_{self.
|
|
285
|
+
return f"ComponentMap_{self.component_map_hash}"
|
|
272
286
|
|
|
273
287
|
def _get_custom_code(self) -> str | None:
|
|
274
288
|
hooks = set()
|
|
@@ -292,7 +306,7 @@ class Markdown(Component):
|
|
|
292
306
|
remark_plugins=_REMARK_PLUGINS,
|
|
293
307
|
rehype_plugins=_REHYPE_PLUGINS,
|
|
294
308
|
)
|
|
295
|
-
.remove_props("componentMap")
|
|
309
|
+
.remove_props("componentMap", "componentMapHash")
|
|
296
310
|
)
|
|
297
311
|
tag.special_props.add(
|
|
298
312
|
Var.create_safe(
|
|
@@ -8,6 +8,7 @@ from reflex.vars import Var, BaseVar, ComputedVar
|
|
|
8
8
|
from reflex.event import EventChain, EventHandler, EventSpec
|
|
9
9
|
from reflex.style import Style
|
|
10
10
|
import textwrap
|
|
11
|
+
from functools import lru_cache
|
|
11
12
|
from hashlib import md5
|
|
12
13
|
from typing import Any, Callable, Dict, Union
|
|
13
14
|
from reflex.compiler import utils
|
|
@@ -32,6 +33,7 @@ _REHYPE_KATEX = Var.create_safe("rehypeKatex", _var_is_local=False)
|
|
|
32
33
|
_REHYPE_RAW = Var.create_safe("rehypeRaw", _var_is_local=False)
|
|
33
34
|
_REHYPE_PLUGINS = Var.create_safe([_REHYPE_KATEX, _REHYPE_RAW])
|
|
34
35
|
|
|
36
|
+
@lru_cache
|
|
35
37
|
def get_base_component_map() -> dict[str, Callable]: ...
|
|
36
38
|
|
|
37
39
|
class Markdown(Component):
|
|
@@ -42,6 +44,7 @@ class Markdown(Component):
|
|
|
42
44
|
*children,
|
|
43
45
|
component_map: Optional[Dict[str, Any]] = None,
|
|
44
46
|
custom_styles: Optional[Dict[str, Any]] = None,
|
|
47
|
+
component_map_hash: Optional[str] = None,
|
|
45
48
|
style: Optional[Style] = None,
|
|
46
49
|
key: Optional[Any] = None,
|
|
47
50
|
id: Optional[Any] = None,
|
|
@@ -101,6 +104,7 @@ class Markdown(Component):
|
|
|
101
104
|
*children: The children of the component.
|
|
102
105
|
component_map: The component map from a tag to a lambda that creates a component.
|
|
103
106
|
custom_styles: Custom styles for the markdown (deprecated in v0.2.9).
|
|
107
|
+
component_map_hash: The hash of the component map, generated at create() time.
|
|
104
108
|
style: The style of the component.
|
|
105
109
|
key: A unique key for the component.
|
|
106
110
|
id: The id for the component.
|