reflex 0.8.15a2__tar.gz → 0.8.23a4__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.
- {reflex-0.8.15a2 → reflex-0.8.23a4}/PKG-INFO +41 -12
- {reflex-0.8.15a2 → reflex-0.8.23a4}/README.md +37 -8
- {reflex-0.8.15a2 → reflex-0.8.23a4}/pyproject.toml +14 -11
- reflex-0.8.23a4/reflex/.templates/web/utils/helpers/paste.js +105 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/utils/state.js +20 -7
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/__init__.py +1 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/__init__.pyi +2 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/app.py +111 -72
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/app_mixins/lifespan.py +12 -5
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/base.py +1 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/compiler/compiler.py +4 -6
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/compiler/templates.py +44 -36
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/compiler/utils.py +18 -10
- reflex-0.8.23a4/reflex/components/base/body.pyi +61 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/error_boundary.py +61 -43
- reflex-0.8.23a4/reflex/components/base/link.pyi +110 -0
- reflex-0.8.23a4/reflex/components/base/meta.pyi +165 -0
- reflex-0.8.23a4/reflex/components/base/script.pyi +66 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/component.py +52 -54
- reflex-0.8.23a4/reflex/components/core/auto_scroll.pyi +67 -0
- reflex-0.8.23a4/reflex/components/core/banner.pyi +330 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/breakpoints.py +14 -18
- reflex-0.8.23a4/reflex/components/core/html.pyi +66 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/match.py +2 -2
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/sticky.py +11 -15
- reflex-0.8.23a4/reflex/components/core/sticky.pyi +313 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/upload.py +1 -3
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/window_events.py +30 -9
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/window_events.pyi +6 -5
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/datadisplay/code.py +1 -1
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/datadisplay/code.pyi +1 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/datadisplay/dataeditor.py +4 -6
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/datadisplay/shiki_code_block.py +106 -110
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/dynamic.py +4 -6
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/__init__.py +2 -2
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/elements/__init__.py +5 -7
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/elements/__init__.pyi +5 -7
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/elements/base.py +1 -1
- reflex-0.8.23a4/reflex/components/el/elements/base.pyi +139 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/elements/forms.py +7 -9
- reflex-0.8.23a4/reflex/components/el/elements/forms.pyi +1594 -0
- reflex-0.8.23a4/reflex/components/el/elements/inline.pyi +1426 -0
- reflex-0.8.23a4/reflex/components/el/elements/media.pyi +2550 -0
- reflex-0.8.23a4/reflex/components/el/elements/metadata.pyi +315 -0
- reflex-0.8.23a4/reflex/components/el/elements/other.pyi +364 -0
- reflex-0.8.23a4/reflex/components/el/elements/scripts.pyi +164 -0
- reflex-0.8.23a4/reflex/components/el/elements/sectioning.pyi +764 -0
- reflex-0.8.23a4/reflex/components/el/elements/tables.pyi +514 -0
- reflex-0.8.23a4/reflex/components/el/elements/typography.pyi +813 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/lucide/icon.py +32 -6
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/lucide/icon.pyi +28 -6
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/markdown/markdown.py +17 -21
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/markdown/markdown.pyi +1 -0
- reflex-0.8.23a4/reflex/components/moment/moment.pyi +78 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/plotly/plotly.py +12 -12
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/props.py +3 -3
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/accordion.py +4 -6
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/accordion.pyi +0 -14
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/base.pyi +0 -5
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/dialog.py +14 -1
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/dialog.pyi +1 -233
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/drawer.pyi +0 -18
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/form.pyi +30 -632
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/progress.py +1 -1
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/progress.pyi +0 -10
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/slider.pyi +0 -10
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/color_mode.pyi +1 -284
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/alert_dialog.pyi +0 -207
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/aspect_ratio.pyi +0 -2
- reflex-0.8.23a4/reflex/components/radix/themes/components/avatar.pyi +68 -0
- reflex-0.8.23a4/reflex/components/radix/themes/components/badge.pyi +67 -0
- reflex-0.8.15a2/reflex/components/radix/themes/components/skeleton.pyi → reflex-0.8.23a4/reflex/components/radix/themes/components/button.pyi +32 -35
- reflex-0.8.23a4/reflex/components/radix/themes/components/callout.pyi +275 -0
- reflex-0.8.23a4/reflex/components/radix/themes/components/card.pyi +67 -0
- reflex-0.8.23a4/reflex/components/radix/themes/components/checkbox.pyi +173 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/checkbox_cards.pyi +1 -96
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/checkbox_group.pyi +1 -80
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/context_menu.pyi +13 -321
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/data_list.pyi +1 -107
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/dialog.pyi +1 -210
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/dropdown_menu.pyi +0 -209
- reflex-0.8.23a4/reflex/components/radix/themes/components/hover_card.pyi +225 -0
- reflex-0.8.23a4/reflex/components/radix/themes/components/icon_button.pyi +177 -0
- reflex-0.8.23a4/reflex/components/radix/themes/components/inset.pyi +69 -0
- reflex-0.8.23a4/reflex/components/radix/themes/components/popover.pyi +229 -0
- reflex-0.8.23a4/reflex/components/radix/themes/components/progress.pyi +63 -0
- reflex-0.8.23a4/reflex/components/radix/themes/components/radio.pyi +66 -0
- reflex-0.8.23a4/reflex/components/radix/themes/components/radio_cards.pyi +125 -0
- reflex-0.8.23a4/reflex/components/radix/themes/components/scroll_area.pyi +66 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/select.pyi +1 -376
- reflex-0.8.23a4/reflex/components/radix/themes/components/separator.pyi +68 -0
- reflex-0.8.23a4/reflex/components/radix/themes/components/skeleton.pyi +68 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/slider.py +3 -5
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/spinner.pyi +0 -5
- reflex-0.8.23a4/reflex/components/radix/themes/components/switch.pyi +70 -0
- reflex-0.8.23a4/reflex/components/radix/themes/components/table.pyi +501 -0
- reflex-0.8.23a4/reflex/components/radix/themes/components/text_area.pyi +119 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/text_field.pyi +6 -392
- reflex-0.8.23a4/reflex/components/radix/themes/components/tooltip.pyi +76 -0
- reflex-0.8.23a4/reflex/components/radix/themes/layout/box.pyi +67 -0
- reflex-0.8.15a2/reflex/components/radix/themes/components/separator.pyi → reflex-0.8.23a4/reflex/components/radix/themes/layout/center.pyi +44 -73
- reflex-0.8.23a4/reflex/components/radix/themes/layout/container.pyi +70 -0
- reflex-0.8.23a4/reflex/components/radix/themes/layout/flex.pyi +118 -0
- reflex-0.8.23a4/reflex/components/radix/themes/layout/grid.pyi +141 -0
- reflex-0.8.23a4/reflex/components/radix/themes/layout/list.pyi +448 -0
- reflex-0.8.15a2/reflex/components/radix/themes/components/scroll_area.pyi → reflex-0.8.23a4/reflex/components/radix/themes/layout/section.pyi +11 -13
- reflex-0.8.23a4/reflex/components/radix/themes/layout/spacer.pyi +116 -0
- reflex-0.8.23a4/reflex/components/radix/themes/layout/stack.pyi +308 -0
- reflex-0.8.15a2/reflex/components/radix/themes/components/avatar.pyi → reflex-0.8.23a4/reflex/components/radix/themes/typography/blockquote.pyi +16 -19
- reflex-0.8.15a2/reflex/components/radix/themes/components/radio.pyi → reflex-0.8.23a4/reflex/components/radix/themes/typography/code.pyi +26 -13
- reflex-0.8.15a2/reflex/components/radix/themes/components/switch.pyi → reflex-0.8.23a4/reflex/components/radix/themes/typography/heading.pyi +40 -33
- reflex-0.8.15a2/reflex/components/radix/themes/components/progress.pyi → reflex-0.8.23a4/reflex/components/radix/themes/typography/link.pyi +51 -28
- reflex-0.8.23a4/reflex/components/radix/themes/typography/text.pyi +831 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/react_player/audio.pyi +1 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/react_player/react_player.py +4 -1
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/react_player/react_player.pyi +1 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/react_player/video.pyi +1 -0
- reflex-0.8.23a4/reflex/components/react_router/dom.pyi +82 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/recharts/cartesian.py +12 -18
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/recharts/general.py +12 -18
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/recharts/recharts.py +2 -2
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/config.py +4 -1
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/constants/installer.py +9 -9
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/custom_components/custom_components.py +6 -5
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/environment.py +73 -7
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/event.py +27 -16
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/experimental/client_state.py +11 -12
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/istate/data.py +29 -16
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/istate/manager/__init__.py +56 -2
- reflex-0.8.23a4/reflex/istate/manager/disk.py +366 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/istate/manager/memory.py +13 -4
- reflex-0.8.23a4/reflex/istate/manager/redis.py +1064 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/istate/proxy.py +21 -19
- reflex-0.8.23a4/reflex/istate/shared.py +402 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/model.py +7 -2
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/plugins/_screenshot.py +2 -2
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/plugins/shared_tailwind.py +9 -14
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/plugins/tailwind_v4.py +2 -2
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/reflex.py +7 -9
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/state.py +136 -58
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/style.py +6 -6
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/testing.py +58 -33
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/build.py +4 -2
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/codespaces.py +1 -1
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/compat.py +1 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/console.py +2 -2
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/decorator.py +3 -3
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/format.py +20 -24
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/frontend_skeleton.py +2 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/prerequisites.py +8 -3
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/processes.py +10 -5
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/pyi_generator.py +51 -57
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/serializers.py +1 -1
- reflex-0.8.23a4/reflex/utils/tasks.py +109 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/telemetry.py +1 -1
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/templates.py +4 -4
- reflex-0.8.23a4/reflex/utils/token_manager.py +467 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/types.py +47 -15
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/vars/base.py +35 -32
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/vars/color.py +6 -8
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/vars/dep_tracking.py +168 -25
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/vars/function.py +3 -3
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/vars/object.py +9 -13
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/vars/sequence.py +18 -24
- reflex-0.8.15a2/reflex/.templates/web/utils/helpers/paste.js +0 -59
- reflex-0.8.15a2/reflex/components/base/body.pyi +0 -255
- reflex-0.8.15a2/reflex/components/base/link.pyi +0 -516
- reflex-0.8.15a2/reflex/components/base/meta.pyi +0 -569
- reflex-0.8.15a2/reflex/components/base/script.pyi +0 -302
- reflex-0.8.15a2/reflex/components/core/auto_scroll.pyi +0 -261
- reflex-0.8.15a2/reflex/components/core/banner.pyi +0 -720
- reflex-0.8.15a2/reflex/components/core/html.pyi +0 -262
- reflex-0.8.15a2/reflex/components/core/sticky.pyi +0 -1101
- reflex-0.8.15a2/reflex/components/el/elements/base.pyi +0 -333
- reflex-0.8.15a2/reflex/components/el/elements/forms.pyi +0 -4694
- reflex-0.8.15a2/reflex/components/el/elements/inline.pyi +0 -6907
- reflex-0.8.15a2/reflex/components/el/elements/media.pyi +0 -12830
- reflex-0.8.15a2/reflex/components/el/elements/metadata.pyi +0 -1149
- reflex-0.8.15a2/reflex/components/el/elements/other.pyi +0 -1728
- reflex-0.8.15a2/reflex/components/el/elements/scripts.pyi +0 -788
- reflex-0.8.15a2/reflex/components/el/elements/sectioning.pyi +0 -3674
- reflex-0.8.15a2/reflex/components/el/elements/tables.pyi +0 -2486
- reflex-0.8.15a2/reflex/components/el/elements/typography.pyi +0 -3937
- reflex-0.8.15a2/reflex/components/moment/moment.pyi +0 -127
- reflex-0.8.15a2/reflex/components/radix/themes/components/badge.pyi +0 -336
- reflex-0.8.15a2/reflex/components/radix/themes/components/button.pyi +0 -368
- reflex-0.8.15a2/reflex/components/radix/themes/components/callout.pyi +0 -1472
- reflex-0.8.15a2/reflex/components/radix/themes/components/card.pyi +0 -275
- reflex-0.8.15a2/reflex/components/radix/themes/components/checkbox.pyi +0 -434
- reflex-0.8.15a2/reflex/components/radix/themes/components/hover_card.pyi +0 -470
- reflex-0.8.15a2/reflex/components/radix/themes/components/icon_button.pyi +0 -371
- reflex-0.8.15a2/reflex/components/radix/themes/components/inset.pyi +0 -321
- reflex-0.8.15a2/reflex/components/radix/themes/components/popover.pyi +0 -462
- reflex-0.8.15a2/reflex/components/radix/themes/components/radio_cards.pyi +0 -247
- reflex-0.8.15a2/reflex/components/radix/themes/components/table.pyi +0 -1954
- reflex-0.8.15a2/reflex/components/radix/themes/components/text_area.pyi +0 -394
- reflex-0.8.15a2/reflex/components/radix/themes/components/tooltip.pyi +0 -118
- reflex-0.8.15a2/reflex/components/radix/themes/layout/box.pyi +0 -261
- reflex-0.8.15a2/reflex/components/radix/themes/layout/center.pyi +0 -310
- reflex-0.8.15a2/reflex/components/radix/themes/layout/container.pyi +0 -248
- reflex-0.8.15a2/reflex/components/radix/themes/layout/flex.pyi +0 -312
- reflex-0.8.15a2/reflex/components/radix/themes/layout/grid.pyi +0 -335
- reflex-0.8.15a2/reflex/components/radix/themes/layout/list.pyi +0 -1426
- reflex-0.8.15a2/reflex/components/radix/themes/layout/section.pyi +0 -268
- reflex-0.8.15a2/reflex/components/radix/themes/layout/spacer.pyi +0 -310
- reflex-0.8.15a2/reflex/components/radix/themes/layout/stack.pyi +0 -890
- reflex-0.8.15a2/reflex/components/radix/themes/typography/blockquote.pyi +0 -341
- reflex-0.8.15a2/reflex/components/radix/themes/typography/code.pyi +0 -344
- reflex-0.8.15a2/reflex/components/radix/themes/typography/heading.pyi +0 -360
- reflex-0.8.15a2/reflex/components/radix/themes/typography/link.pyi +0 -406
- reflex-0.8.15a2/reflex/components/radix/themes/typography/text.pyi +0 -2191
- reflex-0.8.15a2/reflex/components/react_router/dom.pyi +0 -319
- reflex-0.8.15a2/reflex/istate/manager/disk.py +0 -210
- reflex-0.8.15a2/reflex/istate/manager/redis.py +0 -491
- reflex-0.8.15a2/reflex/utils/token_manager.py +0 -225
- {reflex-0.8.15a2 → reflex-0.8.23a4}/.gitignore +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/LICENSE +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/apps/blank/assets/favicon.ico +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/apps/blank/code/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/apps/blank/code/blank.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/.gitignore +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/app/entry.client.js +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/app/routes.js +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/components/shiki/code.js +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/jsconfig.json +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/postcss.config.js +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/react-router.config.js +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/styles/__reflex_style_reset.css +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/utils/helpers/dataeditor.js +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/utils/helpers/debounce.js +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/utils/helpers/range.js +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/utils/helpers/throttle.js +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/utils/helpers/upload.js +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/utils/react-theme.js +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/.templates/web/vite-plugin-safari-cachebust.js +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/__main__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/admin.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/app_mixins/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/app_mixins/middleware.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/app_mixins/mixin.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/assets.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/compiler/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/__init__.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/__init__.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/app_wrap.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/app_wrap.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/bare.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/body.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/document.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/document.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/error_boundary.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/fragment.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/fragment.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/link.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/meta.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/script.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/strict_mode.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/base/strict_mode.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/__init__.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/auto_scroll.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/banner.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/clipboard.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/clipboard.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/colors.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/cond.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/debounce.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/debounce.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/foreach.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/helmet.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/helmet.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/html.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/layout/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/responsive.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/core/upload.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/datadisplay/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/datadisplay/__init__.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/datadisplay/dataeditor.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/datadisplay/logo.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/datadisplay/shiki_code_block.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/__init__.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/element.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/element.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/elements/inline.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/elements/media.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/elements/metadata.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/elements/other.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/elements/scripts.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/elements/sectioning.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/elements/tables.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/el/elements/typography.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/field.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/gridjs/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/gridjs/datatable.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/gridjs/datatable.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/literals.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/lucide/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/markdown/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/moment/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/moment/moment.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/plotly/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/plotly/plotly.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/__init__.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/__init__.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/base.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/drawer.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/form.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/primitives/slider.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/__init__.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/base.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/base.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/color_mode.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/__init__.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/alert_dialog.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/aspect_ratio.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/avatar.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/badge.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/button.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/callout.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/card.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/checkbox.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/checkbox_cards.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/checkbox_group.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/context_menu.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/data_list.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/dialog.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/dropdown_menu.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/hover_card.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/icon_button.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/inset.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/popover.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/progress.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/radio.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/radio_cards.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/radio_group.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/radio_group.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/scroll_area.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/segmented_control.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/segmented_control.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/select.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/separator.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/skeleton.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/slider.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/spinner.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/switch.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/table.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/tabs.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/tabs.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/text_area.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/text_field.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/components/tooltip.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/layout/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/layout/__init__.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/layout/base.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/layout/base.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/layout/box.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/layout/center.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/layout/container.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/layout/flex.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/layout/grid.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/layout/list.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/layout/section.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/layout/spacer.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/layout/stack.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/typography/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/typography/__init__.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/typography/base.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/typography/blockquote.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/typography/code.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/typography/heading.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/typography/link.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/radix/themes/typography/text.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/react_player/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/react_player/audio.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/react_player/video.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/react_router/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/react_router/dom.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/recharts/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/recharts/__init__.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/recharts/cartesian.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/recharts/charts.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/recharts/charts.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/recharts/general.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/recharts/polar.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/recharts/polar.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/recharts/recharts.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/sonner/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/sonner/toast.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/sonner/toast.pyi +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/tags/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/tags/cond_tag.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/tags/iter_tag.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/tags/match_tag.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/tags/tag.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/components/tags/tagless.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/constants/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/constants/base.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/constants/colors.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/constants/compiler.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/constants/config.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/constants/custom_components.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/constants/event.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/constants/route.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/constants/state.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/constants/utils.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/custom_components/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/experimental/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/experimental/hooks.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/istate/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/istate/dynamic.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/istate/storage.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/istate/wrappers.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/middleware/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/middleware/hydrate_middleware.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/middleware/middleware.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/page.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/plugins/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/plugins/base.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/plugins/sitemap.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/plugins/tailwind_v3.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/py.typed +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/route.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/exceptions.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/exec.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/export.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/imports.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/js_runtimes.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/lazy_loader.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/misc.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/monitoring.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/net.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/path_ops.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/redir.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/registry.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/utils/rename.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/vars/__init__.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/vars/datetime.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/reflex/vars/number.py +0 -0
- {reflex-0.8.15a2 → reflex-0.8.23a4}/scripts/hatch_build.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: reflex
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.23a4
|
|
4
4
|
Summary: Web apps in pure Python.
|
|
5
5
|
Project-URL: homepage, https://reflex.dev
|
|
6
6
|
Project-URL: repository, https://github.com/reflex-dev/reflex
|
|
@@ -30,13 +30,13 @@ Requires-Dist: psutil<8.0,>=7.0.0; sys_platform == 'win32'
|
|
|
30
30
|
Requires-Dist: pydantic<3.0,>=1.10.21
|
|
31
31
|
Requires-Dist: python-multipart<1.0,>=0.0.20
|
|
32
32
|
Requires-Dist: python-socketio<6.0,>=5.12.0
|
|
33
|
-
Requires-Dist: redis<
|
|
34
|
-
Requires-Dist: reflex-hosting-cli>=0.1.
|
|
33
|
+
Requires-Dist: redis<8.0,>=5.2.1
|
|
34
|
+
Requires-Dist: reflex-hosting-cli>=0.1.59
|
|
35
35
|
Requires-Dist: rich<15,>=13
|
|
36
36
|
Requires-Dist: sqlmodel<0.1,>=0.0.27
|
|
37
37
|
Requires-Dist: starlette>=0.47.0
|
|
38
38
|
Requires-Dist: typing-extensions>=4.13.0
|
|
39
|
-
Requires-Dist: wrapt<
|
|
39
|
+
Requires-Dist: wrapt<3.0,>=1.17.0
|
|
40
40
|
Provides-Extra: db
|
|
41
41
|
Requires-Dist: alembic<2.0,>=1.15.2; extra == 'db'
|
|
42
42
|
Requires-Dist: pydantic<3.0,>=1.10.21; extra == 'db'
|
|
@@ -86,25 +86,50 @@ See our [architecture page](https://reflex.dev/blog/2024-03-21-reflex-architectu
|
|
|
86
86
|
|
|
87
87
|
## ⚙️ Installation
|
|
88
88
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
pip install reflex
|
|
93
|
-
```
|
|
89
|
+
**Important:** We strongly recommend using a virtual environment to ensure the `reflex` command is available in your PATH.
|
|
94
90
|
|
|
95
91
|
## 🥳 Create your first app
|
|
96
92
|
|
|
97
|
-
|
|
93
|
+
### 1. Create the project directory
|
|
98
94
|
|
|
99
|
-
|
|
95
|
+
Replace `my_app_name` with your project name:
|
|
100
96
|
|
|
101
97
|
```bash
|
|
102
98
|
mkdir my_app_name
|
|
103
99
|
cd my_app_name
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 2. Set up a virtual environment
|
|
103
|
+
|
|
104
|
+
Create and activate virtual environment
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# On Windows:
|
|
108
|
+
python -m venv .venv
|
|
109
|
+
.venv\Scripts\activate
|
|
110
|
+
|
|
111
|
+
# On macOS/Linux:
|
|
112
|
+
python3 -m venv .venv
|
|
113
|
+
source .venv/bin/activate
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 3. Install Reflex
|
|
117
|
+
|
|
118
|
+
Reflex is available as a pip package (Requires Python 3.10+):
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
pip install reflex
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### 4. Initialize the project
|
|
125
|
+
|
|
126
|
+
This command initializes a template app in your new directory:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
104
129
|
reflex init
|
|
105
130
|
```
|
|
106
131
|
|
|
107
|
-
|
|
132
|
+
### 5. Run the app
|
|
108
133
|
|
|
109
134
|
You can run this app in development mode:
|
|
110
135
|
|
|
@@ -116,6 +141,10 @@ You should see your app running at http://localhost:3000.
|
|
|
116
141
|
|
|
117
142
|
Now you can modify the source code in `my_app_name/my_app_name.py`. Reflex has fast refreshes so you can see your changes instantly when you save your code.
|
|
118
143
|
|
|
144
|
+
### Troubleshooting
|
|
145
|
+
|
|
146
|
+
If you installed Reflex without a virtual environment and the `reflex` command is not found, you can run commands using: `python3 -m reflex init` and `python3 -m reflex run`
|
|
147
|
+
|
|
119
148
|
## 🫧 Example App
|
|
120
149
|
|
|
121
150
|
Let's go over an example: creating an image generation UI around [DALL·E](https://platform.openai.com/docs/guides/images/image-generation?context=node). For simplicity, we just call the [OpenAI API](https://platform.openai.com/docs/api-reference/authentication), but you could replace this with an ML model run locally.
|
|
@@ -39,25 +39,50 @@ See our [architecture page](https://reflex.dev/blog/2024-03-21-reflex-architectu
|
|
|
39
39
|
|
|
40
40
|
## ⚙️ Installation
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
pip install reflex
|
|
46
|
-
```
|
|
42
|
+
**Important:** We strongly recommend using a virtual environment to ensure the `reflex` command is available in your PATH.
|
|
47
43
|
|
|
48
44
|
## 🥳 Create your first app
|
|
49
45
|
|
|
50
|
-
|
|
46
|
+
### 1. Create the project directory
|
|
51
47
|
|
|
52
|
-
|
|
48
|
+
Replace `my_app_name` with your project name:
|
|
53
49
|
|
|
54
50
|
```bash
|
|
55
51
|
mkdir my_app_name
|
|
56
52
|
cd my_app_name
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 2. Set up a virtual environment
|
|
56
|
+
|
|
57
|
+
Create and activate virtual environment
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# On Windows:
|
|
61
|
+
python -m venv .venv
|
|
62
|
+
.venv\Scripts\activate
|
|
63
|
+
|
|
64
|
+
# On macOS/Linux:
|
|
65
|
+
python3 -m venv .venv
|
|
66
|
+
source .venv/bin/activate
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 3. Install Reflex
|
|
70
|
+
|
|
71
|
+
Reflex is available as a pip package (Requires Python 3.10+):
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
pip install reflex
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 4. Initialize the project
|
|
78
|
+
|
|
79
|
+
This command initializes a template app in your new directory:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
57
82
|
reflex init
|
|
58
83
|
```
|
|
59
84
|
|
|
60
|
-
|
|
85
|
+
### 5. Run the app
|
|
61
86
|
|
|
62
87
|
You can run this app in development mode:
|
|
63
88
|
|
|
@@ -69,6 +94,10 @@ You should see your app running at http://localhost:3000.
|
|
|
69
94
|
|
|
70
95
|
Now you can modify the source code in `my_app_name/my_app_name.py`. Reflex has fast refreshes so you can see your changes instantly when you save your code.
|
|
71
96
|
|
|
97
|
+
### Troubleshooting
|
|
98
|
+
|
|
99
|
+
If you installed Reflex without a virtual environment and the `reflex` command is not found, you can run commands using: `python3 -m reflex init` and `python3 -m reflex run`
|
|
100
|
+
|
|
72
101
|
## 🫧 Example App
|
|
73
102
|
|
|
74
103
|
Let's go over an example: creating an image generation UI around [DALL·E](https://platform.openai.com/docs/guides/images/image-generation?context=node). For simplicity, we just call the [OpenAI API](https://platform.openai.com/docs/api-reference/authentication), but you could replace this with an ML model run locally.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "reflex"
|
|
3
|
-
version = "0.8.
|
|
3
|
+
version = "0.8.23a4"
|
|
4
4
|
description = "Web apps in pure Python."
|
|
5
5
|
license.text = "Apache-2.0"
|
|
6
6
|
authors = [
|
|
@@ -30,13 +30,13 @@ dependencies = [
|
|
|
30
30
|
"pydantic >=1.10.21,<3.0",
|
|
31
31
|
"python-multipart >=0.0.20,<1.0",
|
|
32
32
|
"python-socketio >=5.12.0,<6.0",
|
|
33
|
-
"redis >=5.2.1,<
|
|
34
|
-
"reflex-hosting-cli >=0.1.
|
|
33
|
+
"redis >=5.2.1,<8.0",
|
|
34
|
+
"reflex-hosting-cli >=0.1.59",
|
|
35
35
|
"rich >=13,<15",
|
|
36
36
|
"sqlmodel >=0.0.27,<0.1",
|
|
37
37
|
"starlette >=0.47.0",
|
|
38
38
|
"typing_extensions >=4.13.0",
|
|
39
|
-
"wrapt >=1.17.0,<
|
|
39
|
+
"wrapt >=1.17.0,<3.0",
|
|
40
40
|
]
|
|
41
41
|
|
|
42
42
|
classifiers = [
|
|
@@ -123,6 +123,7 @@ reportIncompatibleMethodOverride = false
|
|
|
123
123
|
target-version = "py310"
|
|
124
124
|
output-format = "concise"
|
|
125
125
|
lint.isort.split-on-trailing-comma = false
|
|
126
|
+
preview = true
|
|
126
127
|
lint.select = ["ALL"]
|
|
127
128
|
lint.ignore = [
|
|
128
129
|
"A",
|
|
@@ -134,12 +135,18 @@ lint.ignore = [
|
|
|
134
135
|
"BLE",
|
|
135
136
|
"C901",
|
|
136
137
|
"COM",
|
|
138
|
+
"CPY001",
|
|
137
139
|
"D205",
|
|
140
|
+
"DOC202",
|
|
141
|
+
"DOC501",
|
|
142
|
+
"DOC502",
|
|
138
143
|
"DTZ",
|
|
139
144
|
"E501",
|
|
140
145
|
"F403",
|
|
141
146
|
"FBT",
|
|
142
147
|
"FIX",
|
|
148
|
+
"FURB189",
|
|
149
|
+
"FURB140",
|
|
143
150
|
"G004",
|
|
144
151
|
"ISC003",
|
|
145
152
|
"PLC",
|
|
@@ -180,6 +187,7 @@ lint.flake8-bugbear.extend-immutable-calls = [
|
|
|
180
187
|
"*.pyi" = ["D301", "D415", "D417", "D418", "E742", "N", "PGH"]
|
|
181
188
|
"pyi_generator.py" = ["N802"]
|
|
182
189
|
"reflex/constants/*.py" = ["N"]
|
|
190
|
+
"reflex/.templates/apps/blank/code/*" = ["INP001"]
|
|
183
191
|
"*/blank.py" = ["I001"]
|
|
184
192
|
|
|
185
193
|
[tool.pytest.ini_options]
|
|
@@ -235,7 +243,7 @@ fail_fast = true
|
|
|
235
243
|
|
|
236
244
|
[[tool.pre-commit.repos]]
|
|
237
245
|
repo = "https://github.com/astral-sh/ruff-pre-commit"
|
|
238
|
-
rev = "v0.
|
|
246
|
+
rev = "v0.14.8"
|
|
239
247
|
hooks = [
|
|
240
248
|
{ id = "ruff-format", args = [
|
|
241
249
|
"reflex",
|
|
@@ -267,14 +275,9 @@ hooks = [
|
|
|
267
275
|
|
|
268
276
|
[[tool.pre-commit.repos]]
|
|
269
277
|
repo = "https://github.com/RobertCraigie/pyright-python"
|
|
270
|
-
rev = "v1.1.
|
|
278
|
+
rev = "v1.1.407"
|
|
271
279
|
hooks = [{ id = "pyright", args = ["reflex", "tests"], language = "system" }]
|
|
272
280
|
|
|
273
|
-
[[tool.pre-commit.repos]]
|
|
274
|
-
repo = "https://github.com/terrencepreilly/darglint"
|
|
275
|
-
rev = "v1.8.1"
|
|
276
|
-
hooks = [{ id = "darglint", exclude = "^reflex/reflex.py" }]
|
|
277
|
-
|
|
278
281
|
[[tool.pre-commit.repos]]
|
|
279
282
|
repo = "https://github.com/pre-commit/mirrors-prettier"
|
|
280
283
|
rev = "f62a70a3a7114896b062de517d72829ea1c884b6"
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { useEffect, useRef } from "react";
|
|
2
|
+
|
|
3
|
+
const handle_paste_data = (clipboardData) =>
|
|
4
|
+
new Promise((resolve, reject) => {
|
|
5
|
+
const pasted_data = [];
|
|
6
|
+
const n_items = clipboardData.items.length;
|
|
7
|
+
const extract_data = (item) => {
|
|
8
|
+
const type = item.type;
|
|
9
|
+
if (item.kind === "string") {
|
|
10
|
+
item.getAsString((data) => {
|
|
11
|
+
pasted_data.push([type, data]);
|
|
12
|
+
if (pasted_data.length === n_items) {
|
|
13
|
+
resolve(pasted_data);
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
} else if (item.kind === "file") {
|
|
17
|
+
const file = item.getAsFile();
|
|
18
|
+
const reader = new FileReader();
|
|
19
|
+
reader.onload = (e) => {
|
|
20
|
+
pasted_data.push([type, e.target.result]);
|
|
21
|
+
if (pasted_data.length === n_items) {
|
|
22
|
+
resolve(pasted_data);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
if (type.indexOf("text/") === 0) {
|
|
26
|
+
reader.readAsText(file);
|
|
27
|
+
} else {
|
|
28
|
+
reader.readAsDataURL(file);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
for (const item of clipboardData.items) {
|
|
33
|
+
extract_data(item);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
export default function usePasteHandler(target_ids, event_actions, on_paste) {
|
|
38
|
+
const onPasteRef = useRef(on_paste);
|
|
39
|
+
const eventActionsRef = useRef(event_actions);
|
|
40
|
+
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
onPasteRef.current = on_paste;
|
|
43
|
+
}, [on_paste]);
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
eventActionsRef.current = event_actions;
|
|
46
|
+
}, [event_actions]);
|
|
47
|
+
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
const handle_paste = (_ev) => {
|
|
50
|
+
eventActionsRef.current?.preventDefault && _ev.preventDefault();
|
|
51
|
+
eventActionsRef.current?.stopPropagation && _ev.stopPropagation();
|
|
52
|
+
handle_paste_data(_ev.clipboardData).then(onPasteRef.current);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
let cleanupListeners = null;
|
|
56
|
+
let observer = null;
|
|
57
|
+
|
|
58
|
+
const attachListeners = (targets) => {
|
|
59
|
+
targets.forEach((target) =>
|
|
60
|
+
target.addEventListener("paste", handle_paste, false),
|
|
61
|
+
);
|
|
62
|
+
return () => {
|
|
63
|
+
targets.forEach((target) =>
|
|
64
|
+
target.removeEventListener("paste", handle_paste, false),
|
|
65
|
+
);
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const tryAttach = () => {
|
|
70
|
+
if (target_ids.length === 0) {
|
|
71
|
+
cleanupListeners = attachListeners([document]);
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
const targets = target_ids
|
|
75
|
+
.map((id) => document.getElementById(id))
|
|
76
|
+
.filter((element) => !!element);
|
|
77
|
+
|
|
78
|
+
if (targets.length === target_ids.length) {
|
|
79
|
+
cleanupListeners = attachListeners(targets);
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return false;
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
if (!tryAttach()) {
|
|
87
|
+
observer = new MutationObserver(() => {
|
|
88
|
+
if (tryAttach()) {
|
|
89
|
+
observer.disconnect();
|
|
90
|
+
observer = null;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return () => {
|
|
97
|
+
if (observer) {
|
|
98
|
+
observer.disconnect();
|
|
99
|
+
}
|
|
100
|
+
if (cleanupListeners) {
|
|
101
|
+
cleanupListeners();
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}, [target_ids]);
|
|
105
|
+
}
|
|
@@ -56,10 +56,10 @@ export const generateUUID = () => {
|
|
|
56
56
|
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
|
|
57
57
|
let r = Math.random() * 16;
|
|
58
58
|
if (d > 0) {
|
|
59
|
-
r = (d + r) % 16 | 0;
|
|
59
|
+
r = ((d + r) % 16) | 0;
|
|
60
60
|
d = Math.floor(d / 16);
|
|
61
61
|
} else {
|
|
62
|
-
r = (d2 + r) % 16 | 0;
|
|
62
|
+
r = ((d2 + r) % 16) | 0;
|
|
63
63
|
d2 = Math.floor(d2 / 16);
|
|
64
64
|
}
|
|
65
65
|
return (c == "x" ? r : (r & 0x7) | 0x8).toString(16);
|
|
@@ -176,7 +176,7 @@ export const queueEventIfSocketExists = async (
|
|
|
176
176
|
if (!socket) {
|
|
177
177
|
return;
|
|
178
178
|
}
|
|
179
|
-
await queueEvents(events, socket, navigate, params);
|
|
179
|
+
await queueEvents(events, socket, false, navigate, params);
|
|
180
180
|
};
|
|
181
181
|
|
|
182
182
|
/**
|
|
@@ -256,13 +256,13 @@ export const applyEvent = async (event, socket, navigate, params) => {
|
|
|
256
256
|
|
|
257
257
|
if (event.name == "_clear_session_storage") {
|
|
258
258
|
sessionStorage.clear();
|
|
259
|
-
|
|
259
|
+
queueEventIfSocketExists(initialEvents(), socket, navigate, params);
|
|
260
260
|
return false;
|
|
261
261
|
}
|
|
262
262
|
|
|
263
263
|
if (event.name == "_remove_session_storage") {
|
|
264
264
|
sessionStorage.removeItem(event.payload.key);
|
|
265
|
-
|
|
265
|
+
queueEventIfSocketExists(initialEvents(), socket, navigate, params);
|
|
266
266
|
return false;
|
|
267
267
|
}
|
|
268
268
|
|
|
@@ -568,6 +568,7 @@ export const connect = async (
|
|
|
568
568
|
!socket.current.wait_connect
|
|
569
569
|
) {
|
|
570
570
|
socket.current.wait_connect = true;
|
|
571
|
+
socket.current.rehydrate = true;
|
|
571
572
|
socket.current.io.opts.query = { token: getToken() }; // Update token for reconnect.
|
|
572
573
|
socket.current.connect();
|
|
573
574
|
}
|
|
@@ -615,6 +616,16 @@ export const connect = async (
|
|
|
615
616
|
window.addEventListener("pagehide", pagehideHandler);
|
|
616
617
|
window.addEventListener("beforeunload", disconnectTrigger);
|
|
617
618
|
window.addEventListener("unload", disconnectTrigger);
|
|
619
|
+
if (socket.current.rehydrate) {
|
|
620
|
+
socket.current.rehydrate = false;
|
|
621
|
+
queueEvents(
|
|
622
|
+
initialEvents(),
|
|
623
|
+
socket,
|
|
624
|
+
true,
|
|
625
|
+
navigate,
|
|
626
|
+
() => params.current,
|
|
627
|
+
);
|
|
628
|
+
}
|
|
618
629
|
// Drain any initial events from the queue.
|
|
619
630
|
while (event_queue.length > 0 && !event_processing) {
|
|
620
631
|
await processEvent(socket.current, navigate, () => params.current);
|
|
@@ -665,7 +676,9 @@ export const connect = async (
|
|
|
665
676
|
}
|
|
666
677
|
}
|
|
667
678
|
applyClientStorageDelta(client_storage, update.delta);
|
|
668
|
-
|
|
679
|
+
if (update.final !== null) {
|
|
680
|
+
event_processing = !update.final;
|
|
681
|
+
}
|
|
669
682
|
if (update.events) {
|
|
670
683
|
queueEvents(update.events, socket, false, navigate, params);
|
|
671
684
|
}
|
|
@@ -852,7 +865,7 @@ export const useEventLoop = (
|
|
|
852
865
|
await connect(
|
|
853
866
|
socket,
|
|
854
867
|
dispatch,
|
|
855
|
-
[
|
|
868
|
+
[env.TRANSPORT],
|
|
856
869
|
setConnectErrors,
|
|
857
870
|
client_storage,
|
|
858
871
|
navigate,
|
|
@@ -148,6 +148,7 @@ from .event import (
|
|
|
148
148
|
window_alert,
|
|
149
149
|
)
|
|
150
150
|
from .experimental import _x
|
|
151
|
+
from .istate.shared import SharedState
|
|
151
152
|
from .istate.storage import Cookie, LocalStorage, SessionStorage
|
|
152
153
|
from .istate.wrappers import get_state
|
|
153
154
|
from .middleware import Middleware, middleware
|
|
@@ -205,6 +206,7 @@ __all__ = [
|
|
|
205
206
|
"PropsBase",
|
|
206
207
|
"Script",
|
|
207
208
|
"SessionStorage",
|
|
209
|
+
"SharedState",
|
|
208
210
|
"State",
|
|
209
211
|
"Style",
|
|
210
212
|
"UploadFile",
|