reflex 0.7.14a5__py3-none-any.whl → 0.8.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of reflex might be problematic. Click here for more details.
- reflex/.templates/jinja/app/rxconfig.py.jinja2 +4 -1
- reflex/.templates/jinja/web/package.json.jinja2 +1 -1
- reflex/.templates/jinja/web/pages/_app.js.jinja2 +21 -11
- reflex/.templates/jinja/web/pages/_document.js.jinja2 +1 -1
- reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -1
- reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +4 -0
- reflex/.templates/jinja/web/styles/styles.css.jinja2 +1 -0
- reflex/.templates/jinja/web/utils/context.js.jinja2 +25 -8
- reflex/.templates/web/app/entry.client.js +8 -0
- reflex/.templates/web/app/routes.js +10 -0
- reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +12 -37
- reflex/.templates/web/postcss.config.js +1 -1
- reflex/.templates/web/react-router.config.js +6 -0
- reflex/.templates/web/styles/__reflex_style_reset.css +399 -0
- reflex/.templates/web/utils/client_side_routing.js +21 -19
- reflex/.templates/web/utils/react-theme.js +92 -0
- reflex/.templates/web/utils/state.js +251 -100
- reflex/.templates/web/vite-plugin-safari-cachebust.js +160 -0
- reflex/.templates/web/vite.config.js +39 -0
- reflex/__init__.py +1 -6
- reflex/__init__.pyi +327 -192
- reflex/app.py +103 -152
- reflex/base.py +1 -87
- reflex/compiler/compiler.py +70 -19
- reflex/compiler/templates.py +3 -3
- reflex/compiler/utils.py +91 -33
- reflex/components/__init__.py +0 -2
- reflex/components/__init__.pyi +34 -18
- reflex/components/base/__init__.py +1 -5
- reflex/components/base/__init__.pyi +30 -21
- reflex/components/base/app_wrap.pyi +7 -7
- reflex/components/base/body.pyi +7 -7
- reflex/components/base/document.py +18 -14
- reflex/components/base/document.pyi +88 -38
- reflex/components/base/error_boundary.pyi +7 -7
- reflex/components/base/fragment.pyi +7 -7
- reflex/components/base/link.pyi +12 -12
- reflex/components/base/meta.py +4 -15
- reflex/components/base/meta.pyi +31 -31
- reflex/components/base/script.py +60 -58
- reflex/components/base/script.pyi +248 -34
- reflex/components/base/strict_mode.pyi +7 -7
- reflex/components/component.py +146 -217
- reflex/components/core/__init__.py +1 -0
- reflex/components/core/__init__.pyi +77 -37
- reflex/components/core/auto_scroll.pyi +7 -7
- reflex/components/core/banner.pyi +33 -33
- reflex/components/core/client_side_routing.py +7 -6
- reflex/components/core/client_side_routing.pyi +8 -59
- reflex/components/core/clipboard.pyi +7 -7
- reflex/components/core/debounce.py +1 -0
- reflex/components/core/debounce.pyi +7 -7
- reflex/components/core/foreach.py +5 -4
- reflex/components/core/helmet.py +14 -0
- reflex/components/{next/base.pyi → core/helmet.pyi} +12 -10
- reflex/components/core/html.pyi +7 -7
- reflex/components/core/match.py +3 -3
- reflex/components/core/sticky.pyi +21 -20
- reflex/components/core/upload.py +4 -2
- reflex/components/core/upload.pyi +26 -25
- reflex/components/datadisplay/__init__.pyi +13 -7
- reflex/components/datadisplay/code.py +14 -79
- reflex/components/datadisplay/code.pyi +11 -13
- reflex/components/datadisplay/dataeditor.pyi +38 -15
- reflex/components/datadisplay/shiki_code_block.py +5 -3
- reflex/components/datadisplay/shiki_code_block.pyi +16 -15
- reflex/components/dynamic.py +5 -5
- reflex/components/el/__init__.pyi +506 -246
- reflex/components/el/element.pyi +7 -7
- reflex/components/el/elements/__init__.pyi +504 -245
- reflex/components/el/elements/base.pyi +7 -7
- reflex/components/el/elements/forms.pyi +146 -101
- reflex/components/el/elements/inline.pyi +142 -142
- reflex/components/el/elements/media.pyi +131 -130
- reflex/components/el/elements/metadata.pyi +32 -32
- reflex/components/el/elements/other.pyi +37 -37
- reflex/components/el/elements/scripts.pyi +17 -17
- reflex/components/el/elements/sectioning.pyi +77 -77
- reflex/components/el/elements/tables.pyi +52 -52
- reflex/components/el/elements/typography.pyi +77 -77
- reflex/components/field.py +175 -0
- reflex/components/gridjs/datatable.py +2 -2
- reflex/components/gridjs/datatable.pyi +14 -14
- reflex/components/lucide/icon.py +6 -2
- reflex/components/lucide/icon.pyi +19 -17
- reflex/components/markdown/markdown.py +5 -3
- reflex/components/markdown/markdown.pyi +7 -7
- reflex/components/moment/moment.py +1 -1
- reflex/components/moment/moment.pyi +7 -7
- reflex/components/plotly/plotly.py +12 -6
- reflex/components/plotly/plotly.pyi +50 -49
- reflex/components/props.py +376 -27
- reflex/components/radix/__init__.pyi +123 -65
- reflex/components/radix/primitives/__init__.pyi +6 -4
- reflex/components/radix/primitives/accordion.py +8 -1
- reflex/components/radix/primitives/accordion.pyi +37 -37
- reflex/components/radix/primitives/base.pyi +12 -12
- reflex/components/radix/primitives/drawer.pyi +56 -55
- reflex/components/radix/primitives/form.pyi +63 -53
- reflex/components/radix/primitives/progress.pyi +26 -25
- reflex/components/radix/primitives/slider.pyi +27 -27
- reflex/components/radix/themes/__init__.pyi +5 -6
- reflex/components/radix/themes/base.py +3 -3
- reflex/components/radix/themes/base.pyi +42 -42
- reflex/components/radix/themes/color_mode.py +5 -6
- reflex/components/radix/themes/color_mode.pyi +17 -17
- reflex/components/radix/themes/components/__init__.pyi +75 -38
- reflex/components/radix/themes/components/alert_dialog.pyi +37 -37
- reflex/components/radix/themes/components/aspect_ratio.pyi +7 -7
- reflex/components/radix/themes/components/avatar.pyi +7 -7
- reflex/components/radix/themes/components/badge.pyi +7 -7
- reflex/components/radix/themes/components/button.pyi +7 -7
- reflex/components/radix/themes/components/callout.pyi +26 -25
- reflex/components/radix/themes/components/card.pyi +7 -7
- reflex/components/radix/themes/components/checkbox.pyi +16 -15
- reflex/components/radix/themes/components/checkbox_cards.pyi +12 -12
- reflex/components/radix/themes/components/checkbox_group.pyi +12 -12
- reflex/components/radix/themes/components/context_menu.pyi +67 -67
- reflex/components/radix/themes/components/data_list.pyi +22 -22
- reflex/components/radix/themes/components/dialog.pyi +36 -35
- reflex/components/radix/themes/components/dropdown_menu.pyi +42 -42
- reflex/components/radix/themes/components/hover_card.pyi +21 -20
- reflex/components/radix/themes/components/icon_button.pyi +7 -7
- reflex/components/radix/themes/components/inset.pyi +7 -7
- reflex/components/radix/themes/components/popover.pyi +22 -22
- reflex/components/radix/themes/components/progress.pyi +7 -7
- reflex/components/radix/themes/components/radio.pyi +7 -7
- reflex/components/radix/themes/components/radio_cards.pyi +12 -12
- reflex/components/radix/themes/components/radio_group.pyi +21 -20
- reflex/components/radix/themes/components/scroll_area.pyi +7 -7
- reflex/components/radix/themes/components/segmented_control.pyi +12 -12
- reflex/components/radix/themes/components/select.pyi +46 -45
- reflex/components/radix/themes/components/separator.pyi +7 -7
- reflex/components/radix/themes/components/skeleton.pyi +7 -7
- reflex/components/radix/themes/components/slider.pyi +17 -9
- reflex/components/radix/themes/components/spinner.pyi +7 -7
- reflex/components/radix/themes/components/switch.pyi +7 -7
- reflex/components/radix/themes/components/table.pyi +37 -37
- reflex/components/radix/themes/components/tabs.pyi +26 -25
- reflex/components/radix/themes/components/text_area.pyi +15 -9
- reflex/components/radix/themes/components/text_field.pyi +32 -19
- reflex/components/radix/themes/components/tooltip.pyi +7 -7
- reflex/components/radix/themes/layout/__init__.pyi +27 -14
- reflex/components/radix/themes/layout/base.pyi +7 -7
- reflex/components/radix/themes/layout/box.pyi +7 -7
- reflex/components/radix/themes/layout/center.pyi +7 -7
- reflex/components/radix/themes/layout/container.pyi +7 -7
- reflex/components/radix/themes/layout/flex.pyi +7 -7
- reflex/components/radix/themes/layout/grid.pyi +7 -7
- reflex/components/radix/themes/layout/list.pyi +26 -25
- reflex/components/radix/themes/layout/section.pyi +7 -7
- reflex/components/radix/themes/layout/spacer.pyi +7 -7
- reflex/components/radix/themes/layout/stack.pyi +17 -17
- reflex/components/radix/themes/typography/__init__.pyi +7 -5
- reflex/components/radix/themes/typography/blockquote.pyi +7 -7
- reflex/components/radix/themes/typography/code.pyi +7 -7
- reflex/components/radix/themes/typography/heading.pyi +7 -7
- reflex/components/radix/themes/typography/link.py +46 -11
- reflex/components/radix/themes/typography/link.pyi +312 -9
- reflex/components/radix/themes/typography/text.pyi +36 -35
- reflex/components/react_player/audio.pyi +10 -8
- reflex/components/react_player/react_player.pyi +7 -7
- reflex/components/react_player/video.pyi +10 -8
- reflex/components/recharts/__init__.pyi +208 -100
- reflex/components/recharts/cartesian.py +10 -8
- reflex/components/recharts/cartesian.pyi +90 -94
- reflex/components/recharts/charts.py +4 -2
- reflex/components/recharts/charts.pyi +49 -49
- reflex/components/recharts/general.pyi +31 -31
- reflex/components/recharts/polar.py +8 -4
- reflex/components/recharts/polar.pyi +23 -23
- reflex/components/recharts/recharts.py +2 -2
- reflex/components/recharts/recharts.pyi +12 -12
- reflex/components/sonner/toast.py +3 -3
- reflex/components/sonner/toast.pyi +9 -9
- reflex/config.py +10 -113
- reflex/constants/__init__.py +2 -2
- reflex/constants/base.py +28 -11
- reflex/constants/compiler.py +12 -3
- reflex/constants/event.py +1 -0
- reflex/constants/installer.py +26 -20
- reflex/constants/route.py +27 -8
- reflex/constants/state.py +2 -0
- reflex/custom_components/custom_components.py +0 -14
- reflex/environment.py +77 -5
- reflex/event.py +178 -81
- reflex/experimental/__init__.py +0 -30
- reflex/istate/__init__.py +69 -0
- reflex/istate/manager.py +1 -0
- reflex/istate/proxy.py +5 -3
- reflex/page.py +0 -27
- reflex/plugins/__init__.py +3 -2
- reflex/plugins/base.py +5 -1
- reflex/plugins/shared_tailwind.py +215 -0
- reflex/plugins/sitemap.py +206 -0
- reflex/plugins/tailwind_v3.py +15 -108
- reflex/plugins/tailwind_v4.py +18 -110
- reflex/reflex.py +1 -0
- reflex/route.py +157 -75
- reflex/state.py +171 -155
- reflex/testing.py +86 -16
- reflex/utils/build.py +38 -82
- reflex/utils/exec.py +83 -175
- reflex/utils/export.py +2 -2
- reflex/utils/format.py +1 -5
- reflex/utils/imports.py +5 -16
- reflex/utils/misc.py +67 -0
- reflex/utils/prerequisites.py +66 -68
- reflex/utils/processes.py +24 -47
- reflex/utils/pyi_generator.py +44 -49
- reflex/utils/serializers.py +14 -1
- reflex/utils/telemetry.py +0 -15
- reflex/utils/types.py +197 -62
- reflex/vars/__init__.py +2 -0
- reflex/vars/base.py +367 -134
- {reflex-0.7.14a5.dist-info → reflex-0.8.0.dist-info}/METADATA +15 -8
- reflex-0.8.0.dist-info/RECORD +403 -0
- reflex/.templates/web/next.config.js +0 -7
- reflex/components/base/head.py +0 -20
- reflex/components/base/head.pyi +0 -116
- reflex/components/next/__init__.py +0 -10
- reflex/components/next/base.py +0 -7
- reflex/components/next/image.py +0 -117
- reflex/components/next/image.pyi +0 -94
- reflex/components/next/link.py +0 -20
- reflex/components/next/link.pyi +0 -67
- reflex/components/next/video.py +0 -38
- reflex/components/next/video.pyi +0 -68
- reflex/components/suneditor/__init__.py +0 -5
- reflex/components/suneditor/editor.py +0 -269
- reflex/components/suneditor/editor.pyi +0 -199
- reflex/experimental/layout.py +0 -254
- reflex-0.7.14a5.dist-info/RECORD +0 -407
- {reflex-0.7.14a5.dist-info → reflex-0.8.0.dist-info}/WHEEL +0 -0
- {reflex-0.7.14a5.dist-info → reflex-0.8.0.dist-info}/entry_points.txt +0 -0
- {reflex-0.7.14a5.dist-info → reflex-0.8.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -4,20 +4,20 @@
|
|
|
4
4
|
# This file was generated by `reflex/utils/pyi_generator.py`!
|
|
5
5
|
# ------------------------------------------------------
|
|
6
6
|
from collections.abc import Mapping, Sequence
|
|
7
|
-
from typing import Any, Literal
|
|
7
|
+
from typing import Any, Literal
|
|
8
8
|
|
|
9
9
|
from reflex.components.core.breakpoints import Breakpoints
|
|
10
10
|
from reflex.constants.colors import Color
|
|
11
|
-
from reflex.event import EventType
|
|
11
|
+
from reflex.event import EventType, PointerEventInfo
|
|
12
12
|
from reflex.vars.base import Var
|
|
13
13
|
|
|
14
14
|
from .recharts import Recharts
|
|
15
15
|
|
|
16
16
|
class Pie(Recharts):
|
|
17
|
-
def get_event_triggers(self) -> dict[str, Var | Any]: ...
|
|
18
|
-
@overload
|
|
19
17
|
@classmethod
|
|
20
|
-
def
|
|
18
|
+
def get_event_triggers(cls) -> dict[str, Var | Any]: ...
|
|
19
|
+
@classmethod
|
|
20
|
+
def create(
|
|
21
21
|
cls,
|
|
22
22
|
*children,
|
|
23
23
|
data: Sequence[dict[str, Any]] | Var[Sequence[dict[str, Any]]] | None = None,
|
|
@@ -133,10 +133,10 @@ class Pie(Recharts):
|
|
|
133
133
|
"""
|
|
134
134
|
|
|
135
135
|
class Radar(Recharts):
|
|
136
|
-
def get_event_triggers(self) -> dict[str, Var | Any]: ...
|
|
137
|
-
@overload
|
|
138
136
|
@classmethod
|
|
139
|
-
def
|
|
137
|
+
def get_event_triggers(cls) -> dict[str, Var | Any]: ...
|
|
138
|
+
@classmethod
|
|
139
|
+
def create(
|
|
140
140
|
cls,
|
|
141
141
|
*children,
|
|
142
142
|
data_key: Var[int | str] | int | str | None = None,
|
|
@@ -228,10 +228,10 @@ class Radar(Recharts):
|
|
|
228
228
|
"""
|
|
229
229
|
|
|
230
230
|
class RadialBar(Recharts):
|
|
231
|
-
def get_event_triggers(self) -> dict[str, Var | Any]: ...
|
|
232
|
-
@overload
|
|
233
231
|
@classmethod
|
|
234
|
-
def
|
|
232
|
+
def get_event_triggers(cls) -> dict[str, Var | Any]: ...
|
|
233
|
+
@classmethod
|
|
234
|
+
def create(
|
|
235
235
|
cls,
|
|
236
236
|
*children,
|
|
237
237
|
data: Sequence[dict[str, Any]] | Var[Sequence[dict[str, Any]]] | None = None,
|
|
@@ -325,9 +325,8 @@ class RadialBar(Recharts):
|
|
|
325
325
|
"""
|
|
326
326
|
|
|
327
327
|
class PolarAngleAxis(Recharts):
|
|
328
|
-
@overload
|
|
329
328
|
@classmethod
|
|
330
|
-
def create(
|
|
329
|
+
def create(
|
|
331
330
|
cls,
|
|
332
331
|
*children,
|
|
333
332
|
data_key: Var[int | str] | int | str | None = None,
|
|
@@ -357,8 +356,8 @@ class PolarAngleAxis(Recharts):
|
|
|
357
356
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
358
357
|
on_blur: EventType[()] | None = None,
|
|
359
358
|
on_click: EventType[()] | None = None,
|
|
360
|
-
on_context_menu: EventType[()] | None = None,
|
|
361
|
-
on_double_click: EventType[()] | None = None,
|
|
359
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
360
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
362
361
|
on_focus: EventType[()] | None = None,
|
|
363
362
|
on_mount: EventType[()] | None = None,
|
|
364
363
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -369,6 +368,7 @@ class PolarAngleAxis(Recharts):
|
|
|
369
368
|
on_mouse_over: EventType[()] | None = None,
|
|
370
369
|
on_mouse_up: EventType[()] | None = None,
|
|
371
370
|
on_scroll: EventType[()] | None = None,
|
|
371
|
+
on_scroll_end: EventType[()] | None = None,
|
|
372
372
|
on_unmount: EventType[()] | None = None,
|
|
373
373
|
**props,
|
|
374
374
|
) -> PolarAngleAxis:
|
|
@@ -410,9 +410,8 @@ class PolarAngleAxis(Recharts):
|
|
|
410
410
|
"""
|
|
411
411
|
|
|
412
412
|
class PolarGrid(Recharts):
|
|
413
|
-
@overload
|
|
414
413
|
@classmethod
|
|
415
|
-
def create(
|
|
414
|
+
def create(
|
|
416
415
|
cls,
|
|
417
416
|
*children,
|
|
418
417
|
cx: Var[int] | int | None = None,
|
|
@@ -437,9 +436,9 @@ class PolarGrid(Recharts):
|
|
|
437
436
|
autofocus: bool | None = None,
|
|
438
437
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
439
438
|
on_blur: EventType[()] | None = None,
|
|
440
|
-
on_click: EventType[()] | None = None,
|
|
441
|
-
on_context_menu: EventType[()] | None = None,
|
|
442
|
-
on_double_click: EventType[()] | None = None,
|
|
439
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
440
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
441
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
443
442
|
on_focus: EventType[()] | None = None,
|
|
444
443
|
on_mount: EventType[()] | None = None,
|
|
445
444
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -450,6 +449,7 @@ class PolarGrid(Recharts):
|
|
|
450
449
|
on_mouse_over: EventType[()] | None = None,
|
|
451
450
|
on_mouse_up: EventType[()] | None = None,
|
|
452
451
|
on_scroll: EventType[()] | None = None,
|
|
452
|
+
on_scroll_end: EventType[()] | None = None,
|
|
453
453
|
on_unmount: EventType[()] | None = None,
|
|
454
454
|
**props,
|
|
455
455
|
) -> PolarGrid:
|
|
@@ -479,10 +479,10 @@ class PolarGrid(Recharts):
|
|
|
479
479
|
"""
|
|
480
480
|
|
|
481
481
|
class PolarRadiusAxis(Recharts):
|
|
482
|
-
def get_event_triggers(self) -> dict[str, Var | Any]: ...
|
|
483
|
-
@overload
|
|
484
482
|
@classmethod
|
|
485
|
-
def
|
|
483
|
+
def get_event_triggers(cls) -> dict[str, Var | Any]: ...
|
|
484
|
+
@classmethod
|
|
485
|
+
def create(
|
|
486
486
|
cls,
|
|
487
487
|
*children,
|
|
488
488
|
angle: Var[int] | int | None = None,
|
|
@@ -8,7 +8,7 @@ from reflex.components.component import Component, MemoizationLeaf, NoSSRCompone
|
|
|
8
8
|
class Recharts(Component):
|
|
9
9
|
"""A component that wraps a recharts lib."""
|
|
10
10
|
|
|
11
|
-
library = "recharts@
|
|
11
|
+
library = "recharts@3.0.0"
|
|
12
12
|
|
|
13
13
|
def _get_style(self) -> dict:
|
|
14
14
|
return {"wrapperStyle": self.style}
|
|
@@ -17,7 +17,7 @@ class Recharts(Component):
|
|
|
17
17
|
class RechartsCharts(NoSSRComponent, MemoizationLeaf):
|
|
18
18
|
"""A component that wraps a recharts lib."""
|
|
19
19
|
|
|
20
|
-
library = "recharts@
|
|
20
|
+
library = "recharts@3.0.0"
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
LiteralAnimationEasing = Literal["ease", "ease-in", "ease-out", "ease-in-out", "linear"]
|
|
@@ -4,17 +4,16 @@
|
|
|
4
4
|
# This file was generated by `reflex/utils/pyi_generator.py`!
|
|
5
5
|
# ------------------------------------------------------
|
|
6
6
|
from collections.abc import Mapping, Sequence
|
|
7
|
-
from typing import Any, Literal
|
|
7
|
+
from typing import Any, Literal
|
|
8
8
|
|
|
9
9
|
from reflex.components.component import Component, MemoizationLeaf, NoSSRComponent
|
|
10
10
|
from reflex.components.core.breakpoints import Breakpoints
|
|
11
|
-
from reflex.event import EventType
|
|
11
|
+
from reflex.event import EventType, PointerEventInfo
|
|
12
12
|
from reflex.vars.base import Var
|
|
13
13
|
|
|
14
14
|
class Recharts(Component):
|
|
15
|
-
@overload
|
|
16
15
|
@classmethod
|
|
17
|
-
def create(
|
|
16
|
+
def create(
|
|
18
17
|
cls,
|
|
19
18
|
*children,
|
|
20
19
|
style: Sequence[Mapping[str, Any]]
|
|
@@ -29,9 +28,9 @@ class Recharts(Component):
|
|
|
29
28
|
autofocus: bool | None = None,
|
|
30
29
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
31
30
|
on_blur: EventType[()] | None = None,
|
|
32
|
-
on_click: EventType[()] | None = None,
|
|
33
|
-
on_context_menu: EventType[()] | None = None,
|
|
34
|
-
on_double_click: EventType[()] | None = None,
|
|
31
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
32
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
33
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
35
34
|
on_focus: EventType[()] | None = None,
|
|
36
35
|
on_mount: EventType[()] | None = None,
|
|
37
36
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -42,6 +41,7 @@ class Recharts(Component):
|
|
|
42
41
|
on_mouse_over: EventType[()] | None = None,
|
|
43
42
|
on_mouse_up: EventType[()] | None = None,
|
|
44
43
|
on_scroll: EventType[()] | None = None,
|
|
44
|
+
on_scroll_end: EventType[()] | None = None,
|
|
45
45
|
on_unmount: EventType[()] | None = None,
|
|
46
46
|
**props,
|
|
47
47
|
) -> Recharts:
|
|
@@ -63,9 +63,8 @@ class Recharts(Component):
|
|
|
63
63
|
"""
|
|
64
64
|
|
|
65
65
|
class RechartsCharts(NoSSRComponent, MemoizationLeaf):
|
|
66
|
-
@overload
|
|
67
66
|
@classmethod
|
|
68
|
-
def create(
|
|
67
|
+
def create(
|
|
69
68
|
cls,
|
|
70
69
|
*children,
|
|
71
70
|
style: Sequence[Mapping[str, Any]]
|
|
@@ -80,9 +79,9 @@ class RechartsCharts(NoSSRComponent, MemoizationLeaf):
|
|
|
80
79
|
autofocus: bool | None = None,
|
|
81
80
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
82
81
|
on_blur: EventType[()] | None = None,
|
|
83
|
-
on_click: EventType[()] | None = None,
|
|
84
|
-
on_context_menu: EventType[()] | None = None,
|
|
85
|
-
on_double_click: EventType[()] | None = None,
|
|
82
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
83
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
84
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
86
85
|
on_focus: EventType[()] | None = None,
|
|
87
86
|
on_mount: EventType[()] | None = None,
|
|
88
87
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -93,6 +92,7 @@ class RechartsCharts(NoSSRComponent, MemoizationLeaf):
|
|
|
93
92
|
on_mouse_over: EventType[()] | None = None,
|
|
94
93
|
on_mouse_up: EventType[()] | None = None,
|
|
95
94
|
on_scroll: EventType[()] | None = None,
|
|
95
|
+
on_scroll_end: EventType[()] | None = None,
|
|
96
96
|
on_unmount: EventType[()] | None = None,
|
|
97
97
|
**props,
|
|
98
98
|
) -> RechartsCharts:
|
|
@@ -7,7 +7,7 @@ from typing import Any, Literal
|
|
|
7
7
|
from reflex.base import Base
|
|
8
8
|
from reflex.components.component import Component, ComponentNamespace
|
|
9
9
|
from reflex.components.lucide.icon import Icon
|
|
10
|
-
from reflex.components.props import NoExtrasAllowedProps
|
|
10
|
+
from reflex.components.props import NoExtrasAllowedProps
|
|
11
11
|
from reflex.constants.base import Dirs
|
|
12
12
|
from reflex.event import EventSpec, run_script
|
|
13
13
|
from reflex.style import Style, resolved_color_mode
|
|
@@ -74,7 +74,7 @@ def _toast_callback_signature(toast: Var) -> list[Var]:
|
|
|
74
74
|
]
|
|
75
75
|
|
|
76
76
|
|
|
77
|
-
class ToastProps(
|
|
77
|
+
class ToastProps(NoExtrasAllowedProps):
|
|
78
78
|
"""Props for the toast component."""
|
|
79
79
|
|
|
80
80
|
# Toast's title, renders above the description.
|
|
@@ -171,7 +171,7 @@ class ToastProps(PropsBase, NoExtrasAllowedProps):
|
|
|
171
171
|
class Toaster(Component):
|
|
172
172
|
"""A Toaster Component for displaying toast notifications."""
|
|
173
173
|
|
|
174
|
-
library: str | None = "sonner@2.0.
|
|
174
|
+
library: str | None = "sonner@2.0.5"
|
|
175
175
|
|
|
176
176
|
tag = "Toaster"
|
|
177
177
|
|
|
@@ -4,15 +4,15 @@
|
|
|
4
4
|
# This file was generated by `reflex/utils/pyi_generator.py`!
|
|
5
5
|
# ------------------------------------------------------
|
|
6
6
|
from collections.abc import Mapping, Sequence
|
|
7
|
-
from typing import Any, Literal
|
|
7
|
+
from typing import Any, Literal
|
|
8
8
|
|
|
9
9
|
from reflex.base import Base
|
|
10
10
|
from reflex.components.component import Component, ComponentNamespace
|
|
11
11
|
from reflex.components.core.breakpoints import Breakpoints
|
|
12
12
|
from reflex.components.lucide.icon import Icon
|
|
13
|
-
from reflex.components.props import NoExtrasAllowedProps
|
|
13
|
+
from reflex.components.props import NoExtrasAllowedProps
|
|
14
14
|
from reflex.constants.base import Dirs
|
|
15
|
-
from reflex.event import EventSpec, EventType
|
|
15
|
+
from reflex.event import EventSpec, EventType, PointerEventInfo
|
|
16
16
|
from reflex.style import Style
|
|
17
17
|
from reflex.utils.imports import ImportVar
|
|
18
18
|
from reflex.utils.serializers import serializer
|
|
@@ -39,7 +39,7 @@ class ToastAction(Base):
|
|
|
39
39
|
@serializer
|
|
40
40
|
def serialize_action(action: ToastAction) -> dict: ...
|
|
41
41
|
|
|
42
|
-
class ToastProps(
|
|
42
|
+
class ToastProps(NoExtrasAllowedProps):
|
|
43
43
|
title: str | Var | None
|
|
44
44
|
description: str | Var | None
|
|
45
45
|
close_button: bool | None
|
|
@@ -82,9 +82,8 @@ class Toaster(Component):
|
|
|
82
82
|
def toast_loading(message: str | Var = "", **kwargs: Any): ...
|
|
83
83
|
@staticmethod
|
|
84
84
|
def toast_dismiss(id: Var | str | None = None): ...
|
|
85
|
-
@overload
|
|
86
85
|
@classmethod
|
|
87
|
-
def create(
|
|
86
|
+
def create(
|
|
88
87
|
cls,
|
|
89
88
|
*children,
|
|
90
89
|
theme: Var[str] | str | None = None,
|
|
@@ -131,9 +130,9 @@ class Toaster(Component):
|
|
|
131
130
|
autofocus: bool | None = None,
|
|
132
131
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
133
132
|
on_blur: EventType[()] | None = None,
|
|
134
|
-
on_click: EventType[()] | None = None,
|
|
135
|
-
on_context_menu: EventType[()] | None = None,
|
|
136
|
-
on_double_click: EventType[()] | None = None,
|
|
133
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
134
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
135
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
137
136
|
on_focus: EventType[()] | None = None,
|
|
138
137
|
on_mount: EventType[()] | None = None,
|
|
139
138
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -144,6 +143,7 @@ class Toaster(Component):
|
|
|
144
143
|
on_mouse_over: EventType[()] | None = None,
|
|
145
144
|
on_mouse_up: EventType[()] | None = None,
|
|
146
145
|
on_scroll: EventType[()] | None = None,
|
|
146
|
+
on_scroll_end: EventType[()] | None = None,
|
|
147
147
|
on_unmount: EventType[()] | None = None,
|
|
148
148
|
**props,
|
|
149
149
|
) -> Toaster:
|
reflex/config.py
CHANGED
|
@@ -19,60 +19,19 @@ from reflex.base import Base
|
|
|
19
19
|
from reflex.constants.base import LogLevel
|
|
20
20
|
from reflex.environment import EnvironmentVariables as EnvironmentVariables
|
|
21
21
|
from reflex.environment import EnvVar as EnvVar
|
|
22
|
-
from reflex.environment import
|
|
22
|
+
from reflex.environment import (
|
|
23
|
+
ExistingPath,
|
|
24
|
+
_load_dotenv_from_files,
|
|
25
|
+
_paths_from_env_files,
|
|
26
|
+
interpret_env_var_value,
|
|
27
|
+
)
|
|
23
28
|
from reflex.environment import env_var as env_var
|
|
24
29
|
from reflex.environment import environment as environment
|
|
25
|
-
from reflex.plugins import Plugin
|
|
30
|
+
from reflex.plugins import Plugin
|
|
26
31
|
from reflex.utils import console
|
|
27
32
|
from reflex.utils.exceptions import ConfigError
|
|
28
33
|
from reflex.utils.types import true_type_for_pydantic_field
|
|
29
34
|
|
|
30
|
-
try:
|
|
31
|
-
from dotenv import load_dotenv
|
|
32
|
-
except ImportError:
|
|
33
|
-
load_dotenv = None
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
def _load_dotenv_from_str(env_files: str) -> None:
|
|
37
|
-
if not env_files:
|
|
38
|
-
return
|
|
39
|
-
|
|
40
|
-
if load_dotenv is None:
|
|
41
|
-
console.error(
|
|
42
|
-
"""The `python-dotenv` package is required to load environment variables from a file. Run `pip install "python-dotenv>=1.1.0"`."""
|
|
43
|
-
)
|
|
44
|
-
return
|
|
45
|
-
|
|
46
|
-
# load env files in reverse order if they exist
|
|
47
|
-
for env_file_path in [
|
|
48
|
-
Path(p) for s in reversed(env_files.split(os.pathsep)) if (p := s.strip())
|
|
49
|
-
]:
|
|
50
|
-
if env_file_path.exists():
|
|
51
|
-
load_dotenv(env_file_path, override=True)
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def _load_dotenv_from_env():
|
|
55
|
-
"""Load environment variables from paths specified in REFLEX_ENV_FILE."""
|
|
56
|
-
show_deprecation = False
|
|
57
|
-
env_env_file = os.environ.get("REFLEX_ENV_FILE")
|
|
58
|
-
if not env_env_file:
|
|
59
|
-
env_env_file = os.environ.get("ENV_FILE")
|
|
60
|
-
if env_env_file:
|
|
61
|
-
show_deprecation = True
|
|
62
|
-
if show_deprecation:
|
|
63
|
-
console.deprecate(
|
|
64
|
-
"Usage of deprecated ENV_FILE env var detected.",
|
|
65
|
-
reason="Prefer `REFLEX_` prefix when setting env vars.",
|
|
66
|
-
deprecation_version="0.7.13",
|
|
67
|
-
removal_version="0.8.0",
|
|
68
|
-
)
|
|
69
|
-
if env_env_file:
|
|
70
|
-
_load_dotenv_from_str(env_env_file)
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
# Load the env files at import time if they are set in the ENV_FILE environment variable.
|
|
74
|
-
_load_dotenv_from_env()
|
|
75
|
-
|
|
76
35
|
|
|
77
36
|
class DBConfig(Base):
|
|
78
37
|
"""Database config."""
|
|
@@ -261,36 +220,12 @@ class Config(Base):
|
|
|
261
220
|
# List of origins that are allowed to connect to the backend API.
|
|
262
221
|
cors_allowed_origins: list[str] = ["*"]
|
|
263
222
|
|
|
264
|
-
#
|
|
265
|
-
tailwind: dict[str, Any] | None = {"plugins": ["@tailwindcss/typography"]}
|
|
266
|
-
|
|
267
|
-
# DEPRECATED. Timeout when launching the gunicorn server.
|
|
268
|
-
timeout: int | None = None
|
|
269
|
-
|
|
270
|
-
# Whether to enable or disable nextJS gzip compression.
|
|
271
|
-
next_compression: bool = True
|
|
272
|
-
|
|
273
|
-
# Whether to enable or disable NextJS dev indicator.
|
|
274
|
-
next_dev_indicators: bool = False
|
|
275
|
-
|
|
276
|
-
# Whether to use React strict mode in nextJS
|
|
223
|
+
# Whether to use React strict mode.
|
|
277
224
|
react_strict_mode: bool = True
|
|
278
225
|
|
|
279
226
|
# Additional frontend packages to install.
|
|
280
227
|
frontend_packages: list[str] = []
|
|
281
228
|
|
|
282
|
-
# DEPRECATED. The worker class used in production mode
|
|
283
|
-
gunicorn_worker_class: str = "uvicorn.workers.UvicornH11Worker"
|
|
284
|
-
|
|
285
|
-
# DEPRECATED. Number of gunicorn workers from user
|
|
286
|
-
gunicorn_workers: int | None = None
|
|
287
|
-
|
|
288
|
-
# DEPRECATED. Number of requests before a worker is restarted; set to 0 to disable
|
|
289
|
-
gunicorn_max_requests: int | None = None
|
|
290
|
-
|
|
291
|
-
# DEPRECATED. Variance limit for max requests; gunicorn only
|
|
292
|
-
gunicorn_max_requests_jitter: int | None = None
|
|
293
|
-
|
|
294
229
|
# Indicate which type of state manager to use
|
|
295
230
|
state_manager_mode: constants.StateManagerMode = constants.StateManagerMode.DISK
|
|
296
231
|
|
|
@@ -339,25 +274,12 @@ class Config(Base):
|
|
|
339
274
|
super().__init__(*args, **kwargs)
|
|
340
275
|
|
|
341
276
|
# Clean up this code when we remove plain envvar in 0.8.0
|
|
342
|
-
show_deprecation = False
|
|
343
277
|
env_loglevel = os.environ.get("REFLEX_LOGLEVEL")
|
|
344
|
-
if not env_loglevel:
|
|
345
|
-
env_loglevel = os.environ.get("LOGLEVEL")
|
|
346
|
-
if env_loglevel:
|
|
347
|
-
show_deprecation = True
|
|
348
278
|
if env_loglevel is not None:
|
|
349
279
|
env_loglevel = LogLevel(env_loglevel.lower())
|
|
350
280
|
if env_loglevel or self.loglevel != LogLevel.DEFAULT:
|
|
351
281
|
console.set_log_level(env_loglevel or self.loglevel)
|
|
352
282
|
|
|
353
|
-
if show_deprecation:
|
|
354
|
-
console.deprecate(
|
|
355
|
-
"Usage of deprecated LOGLEVEL env var detected.",
|
|
356
|
-
reason="Prefer `REFLEX_` prefix when setting env vars.",
|
|
357
|
-
deprecation_version="0.7.13",
|
|
358
|
-
removal_version="0.8.0",
|
|
359
|
-
)
|
|
360
|
-
|
|
361
283
|
# Update the config from environment variables.
|
|
362
284
|
env_kwargs = self.update_from_env()
|
|
363
285
|
for key, env_value in env_kwargs.items():
|
|
@@ -368,23 +290,6 @@ class Config(Base):
|
|
|
368
290
|
self._non_default_attributes.update(kwargs)
|
|
369
291
|
self._replace_defaults(**kwargs)
|
|
370
292
|
|
|
371
|
-
if self.tailwind is not None and not any(
|
|
372
|
-
isinstance(plugin, (TailwindV3Plugin, TailwindV4Plugin))
|
|
373
|
-
for plugin in self.plugins
|
|
374
|
-
):
|
|
375
|
-
console.deprecate(
|
|
376
|
-
"Inferring tailwind usage",
|
|
377
|
-
reason="""
|
|
378
|
-
|
|
379
|
-
If you are using tailwind, add `rx.plugins.TailwindV3Plugin()` to the `plugins=[]` in rxconfig.py.
|
|
380
|
-
|
|
381
|
-
If you are not using tailwind, set `tailwind` to `None` in rxconfig.py.""",
|
|
382
|
-
deprecation_version="0.7.13",
|
|
383
|
-
removal_version="0.8.0",
|
|
384
|
-
dedupe=True,
|
|
385
|
-
)
|
|
386
|
-
self.plugins.append(TailwindV3Plugin())
|
|
387
|
-
|
|
388
293
|
if (
|
|
389
294
|
self.state_manager_mode == constants.StateManagerMode.REDIS
|
|
390
295
|
and not self.redis_url
|
|
@@ -424,24 +329,16 @@ If you are not using tailwind, set `tailwind` to `None` in rxconfig.py.""",
|
|
|
424
329
|
The updated config values.
|
|
425
330
|
"""
|
|
426
331
|
if self.env_file:
|
|
427
|
-
|
|
332
|
+
_load_dotenv_from_files(_paths_from_env_files(self.env_file))
|
|
428
333
|
|
|
429
334
|
updated_values = {}
|
|
430
335
|
# Iterate over the fields.
|
|
431
336
|
for key, field in self.__fields__.items():
|
|
432
337
|
# The env var name is the key in uppercase.
|
|
338
|
+
environment_variable = None
|
|
433
339
|
for prefix in self._prefixes:
|
|
434
340
|
if environment_variable := os.environ.get(f"{prefix}{key.upper()}"):
|
|
435
341
|
break
|
|
436
|
-
else:
|
|
437
|
-
# Default to non-prefixed env var if other are not found.
|
|
438
|
-
if environment_variable := os.environ.get(key.upper()):
|
|
439
|
-
console.deprecate(
|
|
440
|
-
f"Usage of deprecated {key.upper()} env var detected.",
|
|
441
|
-
reason=f"Prefer `{self._prefixes[0]}` prefix when setting env vars.",
|
|
442
|
-
deprecation_version="0.7.13",
|
|
443
|
-
removal_version="0.8.0",
|
|
444
|
-
)
|
|
445
342
|
|
|
446
343
|
# If the env var is set, override the config value.
|
|
447
344
|
if environment_variable and environment_variable.strip():
|
reflex/constants/__init__.py
CHANGED
|
@@ -16,8 +16,8 @@ from .base import (
|
|
|
16
16
|
Dirs,
|
|
17
17
|
Env,
|
|
18
18
|
LogLevel,
|
|
19
|
-
Next,
|
|
20
19
|
Ping,
|
|
20
|
+
ReactRouter,
|
|
21
21
|
Reflex,
|
|
22
22
|
ReflexHostingCLI,
|
|
23
23
|
Templates,
|
|
@@ -100,13 +100,13 @@ __all__ = [
|
|
|
100
100
|
"LogLevel",
|
|
101
101
|
"MemoizationDisposition",
|
|
102
102
|
"MemoizationMode",
|
|
103
|
-
"Next",
|
|
104
103
|
"Node",
|
|
105
104
|
"PackageJson",
|
|
106
105
|
"Page404",
|
|
107
106
|
"PageNames",
|
|
108
107
|
"Ping",
|
|
109
108
|
"PyprojectToml",
|
|
109
|
+
"ReactRouter",
|
|
110
110
|
"Reflex",
|
|
111
111
|
"RequirementsTxt",
|
|
112
112
|
"RouteArgType",
|
reflex/constants/base.py
CHANGED
|
@@ -22,7 +22,7 @@ class Dirs(SimpleNamespace):
|
|
|
22
22
|
"""Various directories/paths used by Reflex."""
|
|
23
23
|
|
|
24
24
|
# The frontend directories in a project.
|
|
25
|
-
# The web folder where the
|
|
25
|
+
# The web folder where the frontend app is compiled to.
|
|
26
26
|
WEB = ".web"
|
|
27
27
|
# The directory where uploaded files are stored.
|
|
28
28
|
UPLOADED_FILES = "uploaded_files"
|
|
@@ -38,14 +38,18 @@ class Dirs(SimpleNamespace):
|
|
|
38
38
|
COMPONENTS_PATH = UTILS + "/components"
|
|
39
39
|
# The name of the contexts file.
|
|
40
40
|
CONTEXTS_PATH = UTILS + "/context"
|
|
41
|
-
# The name of the output
|
|
42
|
-
|
|
41
|
+
# The name of the output directory.
|
|
42
|
+
BUILD_DIR = "build"
|
|
43
|
+
# The name of the static files directory.
|
|
44
|
+
STATIC = BUILD_DIR + "/client"
|
|
43
45
|
# The name of the public html directory served at "/"
|
|
44
46
|
PUBLIC = "public"
|
|
45
47
|
# The directory where styles are located.
|
|
46
48
|
STYLES = "styles"
|
|
47
49
|
# The name of the pages directory.
|
|
48
|
-
PAGES = "
|
|
50
|
+
PAGES = "app"
|
|
51
|
+
# The name of the routes directory.
|
|
52
|
+
ROUTES = "routes"
|
|
49
53
|
# The name of the env json file.
|
|
50
54
|
ENV_JSON = "env.json"
|
|
51
55
|
# The name of the reflex json file.
|
|
@@ -194,19 +198,32 @@ class Templates(SimpleNamespace):
|
|
|
194
198
|
CODE = "code"
|
|
195
199
|
|
|
196
200
|
|
|
197
|
-
class
|
|
198
|
-
"""Constants related to
|
|
201
|
+
class Javascript(SimpleNamespace):
|
|
202
|
+
"""Constants related to Javascript."""
|
|
199
203
|
|
|
200
|
-
# The NextJS config file
|
|
201
|
-
CONFIG_FILE = "next.config.js"
|
|
202
|
-
# The sitemap config file.
|
|
203
|
-
SITEMAP_CONFIG_FILE = "next-sitemap.config.js"
|
|
204
204
|
# The node modules directory.
|
|
205
205
|
NODE_MODULES = "node_modules"
|
|
206
|
+
|
|
206
207
|
# The package lock file.
|
|
207
208
|
PACKAGE_LOCK = "package-lock.json"
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
class ReactRouter(Javascript):
|
|
212
|
+
"""Constants related to React Router."""
|
|
213
|
+
|
|
214
|
+
# The react router config file
|
|
215
|
+
CONFIG_FILE = "react-router.config.js"
|
|
216
|
+
|
|
208
217
|
# Regex to check for message displayed when frontend comes up
|
|
209
|
-
|
|
218
|
+
DEV_FRONTEND_LISTENING_REGEX = r"Local:[\s]+"
|
|
219
|
+
|
|
220
|
+
# Regex to pattern the route path in the config file
|
|
221
|
+
# INFO Accepting connections at http://localhost:3000
|
|
222
|
+
PROD_FRONTEND_LISTENING_REGEX = r"Accepting connections at[\s]+"
|
|
223
|
+
|
|
224
|
+
FRONTEND_LISTENING_REGEX = (
|
|
225
|
+
rf"(?:{DEV_FRONTEND_LISTENING_REGEX}|{PROD_FRONTEND_LISTENING_REGEX})(.*)"
|
|
226
|
+
)
|
|
210
227
|
|
|
211
228
|
|
|
212
229
|
# Color mode variables
|
reflex/constants/compiler.py
CHANGED
|
@@ -20,6 +20,8 @@ class Ext(SimpleNamespace):
|
|
|
20
20
|
|
|
21
21
|
# The extension for JS files.
|
|
22
22
|
JS = ".js"
|
|
23
|
+
# The extension for JSX files.
|
|
24
|
+
JSX = ".jsx"
|
|
23
25
|
# The extension for python files.
|
|
24
26
|
PY = ".py"
|
|
25
27
|
# The extension for css files.
|
|
@@ -78,16 +80,16 @@ class CompileVars(SimpleNamespace):
|
|
|
78
80
|
|
|
79
81
|
|
|
80
82
|
class PageNames(SimpleNamespace):
|
|
81
|
-
"""The name of basic pages deployed in
|
|
83
|
+
"""The name of basic pages deployed in the frontend."""
|
|
82
84
|
|
|
83
85
|
# The name of the index page.
|
|
84
86
|
INDEX_ROUTE = "index"
|
|
85
87
|
# The name of the app root page.
|
|
86
|
-
APP_ROOT = "
|
|
88
|
+
APP_ROOT = "root.js"
|
|
87
89
|
# The root stylesheet filename.
|
|
88
90
|
STYLESHEET_ROOT = "__reflex_global_styles"
|
|
89
91
|
# The name of the document root page.
|
|
90
|
-
DOCUMENT_ROOT = "_document"
|
|
92
|
+
DOCUMENT_ROOT = "_document.js"
|
|
91
93
|
# The name of the theme page.
|
|
92
94
|
THEME = "theme"
|
|
93
95
|
# The module containing components.
|
|
@@ -202,3 +204,10 @@ class SpecialAttributes(enum.Enum):
|
|
|
202
204
|
True if the attribute is special.
|
|
203
205
|
"""
|
|
204
206
|
return attr.startswith(SPECIAL_ATTRS)
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
class ResetStylesheet(SimpleNamespace):
|
|
210
|
+
"""Constants for CSS reset stylesheet."""
|
|
211
|
+
|
|
212
|
+
# The filename of the CSS reset file.
|
|
213
|
+
FILENAME = "__reflex_style_reset.css"
|
reflex/constants/event.py
CHANGED
|
@@ -91,6 +91,7 @@ class EventTriggers(SimpleNamespace):
|
|
|
91
91
|
ON_POINTER_DOWN_OUTSIDE = "on_pointer_down_outside"
|
|
92
92
|
ON_INTERACT_OUTSIDE = "on_interact_outside"
|
|
93
93
|
ON_SCROLL = "on_scroll"
|
|
94
|
+
ON_SCROLL_END = "on_scroll_end"
|
|
94
95
|
ON_SUBMIT = "on_submit"
|
|
95
96
|
ON_MOUNT = "on_mount"
|
|
96
97
|
ON_UNMOUNT = "on_unmount"
|