reflex 0.7.14a5__py3-none-any.whl → 0.8.0a1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of reflex might be problematic. Click here for more details.
- reflex/.templates/jinja/app/rxconfig.py.jinja2 +4 -1
- reflex/.templates/jinja/web/package.json.jinja2 +1 -1
- reflex/.templates/jinja/web/pages/_app.js.jinja2 +16 -10
- 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/utils/context.js.jinja2 +25 -6
- 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 -32
- reflex/.templates/web/postcss.config.js +1 -1
- reflex/.templates/web/react-router.config.js +6 -0
- reflex/.templates/web/utils/client_side_routing.js +21 -19
- reflex/.templates/web/utils/react-theme.js +89 -0
- reflex/.templates/web/utils/state.js +155 -67
- reflex/.templates/web/vite.config.js +32 -0
- reflex/__init__.py +1 -6
- reflex/__init__.pyi +0 -4
- reflex/app.py +69 -132
- reflex/base.py +1 -87
- reflex/compiler/compiler.py +40 -3
- reflex/compiler/utils.py +54 -28
- reflex/components/__init__.py +0 -2
- reflex/components/__init__.pyi +0 -3
- reflex/components/base/__init__.py +1 -5
- reflex/components/base/__init__.pyi +4 -6
- reflex/components/base/app_wrap.pyi +5 -4
- reflex/components/base/body.pyi +5 -4
- reflex/components/base/document.py +18 -14
- reflex/components/base/document.pyi +83 -27
- reflex/components/base/error_boundary.pyi +5 -4
- reflex/components/base/fragment.pyi +5 -4
- reflex/components/base/link.pyi +9 -7
- reflex/components/base/meta.pyi +17 -13
- reflex/components/base/script.py +60 -58
- reflex/components/base/script.pyi +246 -31
- reflex/components/base/strict_mode.pyi +5 -4
- reflex/components/component.py +109 -194
- reflex/components/core/__init__.py +1 -0
- reflex/components/core/__init__.pyi +1 -0
- reflex/components/core/auto_scroll.pyi +5 -4
- reflex/components/core/banner.pyi +25 -19
- reflex/components/core/client_side_routing.py +7 -6
- reflex/components/core/client_side_routing.pyi +6 -56
- reflex/components/core/clipboard.pyi +5 -4
- reflex/components/core/debounce.py +1 -0
- reflex/components/core/debounce.pyi +5 -4
- reflex/components/core/foreach.py +3 -2
- reflex/components/core/helmet.py +14 -0
- reflex/components/{next/base.pyi → core/helmet.pyi} +10 -7
- reflex/components/core/html.pyi +5 -4
- reflex/components/core/sticky.pyi +17 -13
- reflex/components/core/upload.py +2 -1
- reflex/components/core/upload.pyi +21 -16
- reflex/components/datadisplay/code.pyi +9 -7
- reflex/components/datadisplay/dataeditor.pyi +5 -4
- reflex/components/datadisplay/shiki_code_block.pyi +13 -10
- reflex/components/dynamic.py +4 -5
- reflex/components/el/element.pyi +5 -4
- reflex/components/el/elements/base.pyi +5 -4
- reflex/components/el/elements/forms.pyi +69 -52
- reflex/components/el/elements/inline.pyi +113 -85
- reflex/components/el/elements/media.pyi +105 -79
- reflex/components/el/elements/metadata.pyi +25 -19
- reflex/components/el/elements/other.pyi +29 -22
- reflex/components/el/elements/scripts.pyi +13 -10
- reflex/components/el/elements/sectioning.pyi +61 -46
- reflex/components/el/elements/tables.pyi +41 -31
- reflex/components/el/elements/typography.pyi +61 -46
- reflex/components/field.py +175 -0
- reflex/components/gridjs/datatable.py +2 -2
- reflex/components/gridjs/datatable.pyi +11 -9
- reflex/components/lucide/icon.py +6 -2
- reflex/components/lucide/icon.pyi +15 -10
- reflex/components/markdown/markdown.pyi +5 -4
- reflex/components/moment/moment.pyi +5 -4
- reflex/components/plotly/plotly.pyi +19 -10
- reflex/components/props.py +376 -27
- reflex/components/radix/primitives/accordion.py +8 -1
- reflex/components/radix/primitives/accordion.pyi +29 -22
- reflex/components/radix/primitives/base.pyi +9 -7
- reflex/components/radix/primitives/drawer.pyi +45 -34
- reflex/components/radix/primitives/form.pyi +41 -31
- reflex/components/radix/primitives/progress.pyi +21 -16
- reflex/components/radix/primitives/slider.pyi +21 -16
- reflex/components/radix/themes/base.py +3 -3
- reflex/components/radix/themes/base.pyi +33 -25
- reflex/components/radix/themes/color_mode.pyi +13 -10
- reflex/components/radix/themes/components/alert_dialog.pyi +29 -22
- reflex/components/radix/themes/components/aspect_ratio.pyi +5 -4
- reflex/components/radix/themes/components/avatar.pyi +5 -4
- reflex/components/radix/themes/components/badge.pyi +5 -4
- reflex/components/radix/themes/components/button.pyi +5 -4
- reflex/components/radix/themes/components/callout.pyi +21 -16
- reflex/components/radix/themes/components/card.pyi +5 -4
- reflex/components/radix/themes/components/checkbox.pyi +13 -10
- reflex/components/radix/themes/components/checkbox_cards.pyi +9 -7
- reflex/components/radix/themes/components/checkbox_group.pyi +9 -7
- reflex/components/radix/themes/components/context_menu.pyi +53 -40
- reflex/components/radix/themes/components/data_list.pyi +17 -13
- reflex/components/radix/themes/components/dialog.pyi +29 -22
- reflex/components/radix/themes/components/dropdown_menu.pyi +33 -25
- reflex/components/radix/themes/components/hover_card.pyi +17 -13
- reflex/components/radix/themes/components/icon_button.pyi +5 -4
- reflex/components/radix/themes/components/inset.pyi +5 -4
- reflex/components/radix/themes/components/popover.pyi +17 -13
- reflex/components/radix/themes/components/progress.pyi +5 -4
- reflex/components/radix/themes/components/radio.pyi +5 -4
- reflex/components/radix/themes/components/radio_cards.pyi +9 -7
- reflex/components/radix/themes/components/radio_group.pyi +17 -13
- reflex/components/radix/themes/components/scroll_area.pyi +5 -4
- reflex/components/radix/themes/components/segmented_control.pyi +9 -7
- reflex/components/radix/themes/components/select.pyi +37 -28
- reflex/components/radix/themes/components/separator.pyi +5 -4
- reflex/components/radix/themes/components/skeleton.pyi +5 -4
- reflex/components/radix/themes/components/slider.pyi +5 -4
- reflex/components/radix/themes/components/spinner.pyi +5 -4
- reflex/components/radix/themes/components/switch.pyi +5 -4
- reflex/components/radix/themes/components/table.pyi +29 -22
- reflex/components/radix/themes/components/tabs.pyi +21 -16
- reflex/components/radix/themes/components/text_area.pyi +5 -4
- reflex/components/radix/themes/components/text_field.pyi +13 -10
- reflex/components/radix/themes/components/tooltip.pyi +5 -4
- reflex/components/radix/themes/layout/base.pyi +5 -4
- reflex/components/radix/themes/layout/box.pyi +5 -4
- reflex/components/radix/themes/layout/center.pyi +5 -4
- reflex/components/radix/themes/layout/container.pyi +5 -4
- reflex/components/radix/themes/layout/flex.pyi +5 -4
- reflex/components/radix/themes/layout/grid.pyi +5 -4
- reflex/components/radix/themes/layout/list.pyi +21 -16
- reflex/components/radix/themes/layout/section.pyi +5 -4
- reflex/components/radix/themes/layout/spacer.pyi +5 -4
- reflex/components/radix/themes/layout/stack.pyi +13 -10
- reflex/components/radix/themes/typography/blockquote.pyi +5 -4
- reflex/components/radix/themes/typography/code.pyi +5 -4
- reflex/components/radix/themes/typography/heading.pyi +5 -4
- reflex/components/radix/themes/typography/link.py +42 -9
- reflex/components/radix/themes/typography/link.pyi +311 -6
- reflex/components/radix/themes/typography/text.pyi +29 -22
- reflex/components/react_player/audio.pyi +5 -4
- reflex/components/react_player/react_player.pyi +5 -4
- reflex/components/react_player/video.pyi +5 -4
- reflex/components/recharts/cartesian.py +2 -1
- reflex/components/recharts/cartesian.pyi +65 -46
- reflex/components/recharts/charts.py +4 -2
- reflex/components/recharts/charts.pyi +36 -24
- reflex/components/recharts/general.pyi +24 -18
- reflex/components/recharts/polar.py +8 -4
- reflex/components/recharts/polar.pyi +16 -10
- reflex/components/recharts/recharts.pyi +9 -7
- reflex/components/sonner/toast.py +2 -2
- reflex/components/sonner/toast.pyi +7 -6
- reflex/config.py +3 -77
- reflex/constants/__init__.py +1 -0
- reflex/constants/base.py +38 -8
- reflex/constants/compiler.py +4 -2
- reflex/constants/event.py +1 -0
- reflex/constants/installer.py +23 -16
- reflex/constants/state.py +2 -0
- reflex/custom_components/custom_components.py +0 -14
- reflex/environment.py +1 -1
- reflex/event.py +178 -81
- reflex/experimental/__init__.py +0 -30
- 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 +158 -0
- reflex/plugins/sitemap.py +206 -0
- reflex/plugins/tailwind_v3.py +13 -106
- reflex/plugins/tailwind_v4.py +15 -108
- reflex/reflex.py +1 -0
- reflex/state.py +134 -140
- reflex/testing.py +57 -9
- reflex/utils/build.py +9 -69
- reflex/utils/exec.py +59 -161
- reflex/utils/export.py +1 -1
- reflex/utils/imports.py +0 -4
- reflex/utils/misc.py +28 -0
- reflex/utils/prerequisites.py +62 -59
- reflex/utils/processes.py +6 -6
- reflex/utils/pyi_generator.py +21 -9
- reflex/utils/serializers.py +14 -1
- reflex/utils/types.py +196 -61
- reflex/vars/__init__.py +2 -0
- reflex/vars/base.py +367 -134
- {reflex-0.7.14a5.dist-info → reflex-0.8.0a1.dist-info}/METADATA +12 -5
- {reflex-0.7.14a5.dist-info → reflex-0.8.0a1.dist-info}/RECORD +190 -196
- 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 → reflex-0.8.0a1.dist-info}/WHEEL +0 -0
- {reflex-0.7.14a5.dist-info → reflex-0.8.0a1.dist-info}/entry_points.txt +0 -0
- {reflex-0.7.14a5.dist-info → reflex-0.8.0a1.dist-info}/licenses/LICENSE +0 -0
|
@@ -9,7 +9,7 @@ from typing import Any, Literal, overload
|
|
|
9
9
|
from reflex.components.component import MemoizationLeaf
|
|
10
10
|
from reflex.components.core.breakpoints import Breakpoints
|
|
11
11
|
from reflex.constants.colors import Color
|
|
12
|
-
from reflex.event import EventType
|
|
12
|
+
from reflex.event import EventType, PointerEventInfo
|
|
13
13
|
from reflex.vars.base import Var
|
|
14
14
|
|
|
15
15
|
from .recharts import Recharts
|
|
@@ -38,9 +38,9 @@ class ResponsiveContainer(Recharts, MemoizationLeaf):
|
|
|
38
38
|
autofocus: bool | None = None,
|
|
39
39
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
40
40
|
on_blur: EventType[()] | None = None,
|
|
41
|
-
on_click: EventType[()] | None = None,
|
|
42
|
-
on_context_menu: EventType[()] | None = None,
|
|
43
|
-
on_double_click: EventType[()] | None = None,
|
|
41
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
42
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
43
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
44
44
|
on_focus: EventType[()] | None = None,
|
|
45
45
|
on_mount: EventType[()] | None = None,
|
|
46
46
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -52,6 +52,7 @@ class ResponsiveContainer(Recharts, MemoizationLeaf):
|
|
|
52
52
|
on_mouse_up: EventType[()] | None = None,
|
|
53
53
|
on_resize: EventType[()] | None = None,
|
|
54
54
|
on_scroll: EventType[()] | None = None,
|
|
55
|
+
on_scroll_end: EventType[()] | None = None,
|
|
55
56
|
on_unmount: EventType[()] | None = None,
|
|
56
57
|
**props,
|
|
57
58
|
) -> ResponsiveContainer:
|
|
@@ -141,8 +142,8 @@ class Legend(Recharts):
|
|
|
141
142
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
142
143
|
on_blur: EventType[()] | None = None,
|
|
143
144
|
on_click: EventType[()] | None = None,
|
|
144
|
-
on_context_menu: EventType[()] | None = None,
|
|
145
|
-
on_double_click: EventType[()] | None = None,
|
|
145
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
146
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
146
147
|
on_focus: EventType[()] | None = None,
|
|
147
148
|
on_mount: EventType[()] | None = None,
|
|
148
149
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -153,6 +154,7 @@ class Legend(Recharts):
|
|
|
153
154
|
on_mouse_over: EventType[()] | None = None,
|
|
154
155
|
on_mouse_up: EventType[()] | None = None,
|
|
155
156
|
on_scroll: EventType[()] | None = None,
|
|
157
|
+
on_scroll_end: EventType[()] | None = None,
|
|
156
158
|
on_unmount: EventType[()] | None = None,
|
|
157
159
|
**props,
|
|
158
160
|
) -> Legend:
|
|
@@ -230,9 +232,9 @@ class GraphingTooltip(Recharts):
|
|
|
230
232
|
autofocus: bool | None = None,
|
|
231
233
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
232
234
|
on_blur: EventType[()] | None = None,
|
|
233
|
-
on_click: EventType[()] | None = None,
|
|
234
|
-
on_context_menu: EventType[()] | None = None,
|
|
235
|
-
on_double_click: EventType[()] | None = None,
|
|
235
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
236
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
237
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
236
238
|
on_focus: EventType[()] | None = None,
|
|
237
239
|
on_mount: EventType[()] | None = None,
|
|
238
240
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -243,6 +245,7 @@ class GraphingTooltip(Recharts):
|
|
|
243
245
|
on_mouse_over: EventType[()] | None = None,
|
|
244
246
|
on_mouse_up: EventType[()] | None = None,
|
|
245
247
|
on_scroll: EventType[()] | None = None,
|
|
248
|
+
on_scroll_end: EventType[()] | None = None,
|
|
246
249
|
on_unmount: EventType[()] | None = None,
|
|
247
250
|
**props,
|
|
248
251
|
) -> GraphingTooltip:
|
|
@@ -343,9 +346,9 @@ class Label(Recharts):
|
|
|
343
346
|
autofocus: bool | None = None,
|
|
344
347
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
345
348
|
on_blur: EventType[()] | None = None,
|
|
346
|
-
on_click: EventType[()] | None = None,
|
|
347
|
-
on_context_menu: EventType[()] | None = None,
|
|
348
|
-
on_double_click: EventType[()] | None = None,
|
|
349
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
350
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
351
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
349
352
|
on_focus: EventType[()] | None = None,
|
|
350
353
|
on_mount: EventType[()] | None = None,
|
|
351
354
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -356,6 +359,7 @@ class Label(Recharts):
|
|
|
356
359
|
on_mouse_over: EventType[()] | None = None,
|
|
357
360
|
on_mouse_up: EventType[()] | None = None,
|
|
358
361
|
on_scroll: EventType[()] | None = None,
|
|
362
|
+
on_scroll_end: EventType[()] | None = None,
|
|
359
363
|
on_unmount: EventType[()] | None = None,
|
|
360
364
|
**props,
|
|
361
365
|
) -> Label:
|
|
@@ -445,9 +449,9 @@ class LabelList(Recharts):
|
|
|
445
449
|
autofocus: bool | None = None,
|
|
446
450
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
447
451
|
on_blur: EventType[()] | None = None,
|
|
448
|
-
on_click: EventType[()] | None = None,
|
|
449
|
-
on_context_menu: EventType[()] | None = None,
|
|
450
|
-
on_double_click: EventType[()] | None = None,
|
|
452
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
453
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
454
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
451
455
|
on_focus: EventType[()] | None = None,
|
|
452
456
|
on_mount: EventType[()] | None = None,
|
|
453
457
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -458,6 +462,7 @@ class LabelList(Recharts):
|
|
|
458
462
|
on_mouse_over: EventType[()] | None = None,
|
|
459
463
|
on_mouse_up: EventType[()] | None = None,
|
|
460
464
|
on_scroll: EventType[()] | None = None,
|
|
465
|
+
on_scroll_end: EventType[()] | None = None,
|
|
461
466
|
on_unmount: EventType[()] | None = None,
|
|
462
467
|
**props,
|
|
463
468
|
) -> LabelList:
|
|
@@ -503,9 +508,9 @@ class Cell(Recharts):
|
|
|
503
508
|
autofocus: bool | None = None,
|
|
504
509
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
505
510
|
on_blur: EventType[()] | None = None,
|
|
506
|
-
on_click: EventType[()] | None = None,
|
|
507
|
-
on_context_menu: EventType[()] | None = None,
|
|
508
|
-
on_double_click: EventType[()] | None = None,
|
|
511
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
512
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
513
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
509
514
|
on_focus: EventType[()] | None = None,
|
|
510
515
|
on_mount: EventType[()] | None = None,
|
|
511
516
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -516,6 +521,7 @@ class Cell(Recharts):
|
|
|
516
521
|
on_mouse_over: EventType[()] | None = None,
|
|
517
522
|
on_mouse_up: EventType[()] | None = None,
|
|
518
523
|
on_scroll: EventType[()] | None = None,
|
|
524
|
+
on_scroll_end: EventType[()] | None = None,
|
|
519
525
|
on_unmount: EventType[()] | None = None,
|
|
520
526
|
**props,
|
|
521
527
|
) -> Cell:
|
|
@@ -95,7 +95,8 @@ class Pie(Recharts):
|
|
|
95
95
|
# The tabindex of wrapper surrounding the cells. Default: 0
|
|
96
96
|
root_tab_index: Var[int]
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
@classmethod
|
|
99
|
+
def get_event_triggers(cls) -> dict[str, Var | Any]:
|
|
99
100
|
"""Get the event triggers that pass the component's value to the handler.
|
|
100
101
|
|
|
101
102
|
Returns:
|
|
@@ -159,7 +160,8 @@ class Radar(Recharts):
|
|
|
159
160
|
# Valid children components
|
|
160
161
|
_valid_children: ClassVar[list[str]] = ["LabelList"]
|
|
161
162
|
|
|
162
|
-
|
|
163
|
+
@classmethod
|
|
164
|
+
def get_event_triggers(cls) -> dict[str, Var | Any]:
|
|
163
165
|
"""Get the event triggers that pass the component's value to the handler.
|
|
164
166
|
|
|
165
167
|
Returns:
|
|
@@ -211,7 +213,8 @@ class RadialBar(Recharts):
|
|
|
211
213
|
# Valid children components
|
|
212
214
|
_valid_children: ClassVar[list[str]] = ["Cell", "LabelList"]
|
|
213
215
|
|
|
214
|
-
|
|
216
|
+
@classmethod
|
|
217
|
+
def get_event_triggers(cls) -> dict[str, Var | Any]:
|
|
215
218
|
"""Get the event triggers that pass the component's value to the handler.
|
|
216
219
|
|
|
217
220
|
Returns:
|
|
@@ -384,7 +387,8 @@ class PolarRadiusAxis(Recharts):
|
|
|
384
387
|
# The stroke color of axis. Default: rx.color("gray", 10)
|
|
385
388
|
stroke: Var[str | Color] = LiteralVar.create(Color("gray", 10))
|
|
386
389
|
|
|
387
|
-
|
|
390
|
+
@classmethod
|
|
391
|
+
def get_event_triggers(cls) -> dict[str, Var | Any]:
|
|
388
392
|
"""Get the event triggers that pass the component's value to the handler.
|
|
389
393
|
|
|
390
394
|
Returns:
|
|
@@ -8,13 +8,14 @@ from typing import Any, Literal, overload
|
|
|
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
|
-
|
|
17
|
+
@classmethod
|
|
18
|
+
def get_event_triggers(cls) -> dict[str, Var | Any]: ...
|
|
18
19
|
@overload
|
|
19
20
|
@classmethod
|
|
20
21
|
def create( # type: ignore
|
|
@@ -133,7 +134,8 @@ class Pie(Recharts):
|
|
|
133
134
|
"""
|
|
134
135
|
|
|
135
136
|
class Radar(Recharts):
|
|
136
|
-
|
|
137
|
+
@classmethod
|
|
138
|
+
def get_event_triggers(cls) -> dict[str, Var | Any]: ...
|
|
137
139
|
@overload
|
|
138
140
|
@classmethod
|
|
139
141
|
def create( # type: ignore
|
|
@@ -228,7 +230,8 @@ class Radar(Recharts):
|
|
|
228
230
|
"""
|
|
229
231
|
|
|
230
232
|
class RadialBar(Recharts):
|
|
231
|
-
|
|
233
|
+
@classmethod
|
|
234
|
+
def get_event_triggers(cls) -> dict[str, Var | Any]: ...
|
|
232
235
|
@overload
|
|
233
236
|
@classmethod
|
|
234
237
|
def create( # type: ignore
|
|
@@ -357,8 +360,8 @@ class PolarAngleAxis(Recharts):
|
|
|
357
360
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
358
361
|
on_blur: EventType[()] | None = None,
|
|
359
362
|
on_click: EventType[()] | None = None,
|
|
360
|
-
on_context_menu: EventType[()] | None = None,
|
|
361
|
-
on_double_click: EventType[()] | None = None,
|
|
363
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
364
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
362
365
|
on_focus: EventType[()] | None = None,
|
|
363
366
|
on_mount: EventType[()] | None = None,
|
|
364
367
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -369,6 +372,7 @@ class PolarAngleAxis(Recharts):
|
|
|
369
372
|
on_mouse_over: EventType[()] | None = None,
|
|
370
373
|
on_mouse_up: EventType[()] | None = None,
|
|
371
374
|
on_scroll: EventType[()] | None = None,
|
|
375
|
+
on_scroll_end: EventType[()] | None = None,
|
|
372
376
|
on_unmount: EventType[()] | None = None,
|
|
373
377
|
**props,
|
|
374
378
|
) -> PolarAngleAxis:
|
|
@@ -437,9 +441,9 @@ class PolarGrid(Recharts):
|
|
|
437
441
|
autofocus: bool | None = None,
|
|
438
442
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
439
443
|
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,
|
|
444
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
445
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
446
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
443
447
|
on_focus: EventType[()] | None = None,
|
|
444
448
|
on_mount: EventType[()] | None = None,
|
|
445
449
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -450,6 +454,7 @@ class PolarGrid(Recharts):
|
|
|
450
454
|
on_mouse_over: EventType[()] | None = None,
|
|
451
455
|
on_mouse_up: EventType[()] | None = None,
|
|
452
456
|
on_scroll: EventType[()] | None = None,
|
|
457
|
+
on_scroll_end: EventType[()] | None = None,
|
|
453
458
|
on_unmount: EventType[()] | None = None,
|
|
454
459
|
**props,
|
|
455
460
|
) -> PolarGrid:
|
|
@@ -479,7 +484,8 @@ class PolarGrid(Recharts):
|
|
|
479
484
|
"""
|
|
480
485
|
|
|
481
486
|
class PolarRadiusAxis(Recharts):
|
|
482
|
-
|
|
487
|
+
@classmethod
|
|
488
|
+
def get_event_triggers(cls) -> dict[str, Var | Any]: ...
|
|
483
489
|
@overload
|
|
484
490
|
@classmethod
|
|
485
491
|
def create( # type: ignore
|
|
@@ -8,7 +8,7 @@ from typing import Any, Literal, overload
|
|
|
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):
|
|
@@ -29,9 +29,9 @@ class Recharts(Component):
|
|
|
29
29
|
autofocus: bool | None = None,
|
|
30
30
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
31
31
|
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,
|
|
32
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
33
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
34
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
35
35
|
on_focus: EventType[()] | None = None,
|
|
36
36
|
on_mount: EventType[()] | None = None,
|
|
37
37
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -42,6 +42,7 @@ class Recharts(Component):
|
|
|
42
42
|
on_mouse_over: EventType[()] | None = None,
|
|
43
43
|
on_mouse_up: EventType[()] | None = None,
|
|
44
44
|
on_scroll: EventType[()] | None = None,
|
|
45
|
+
on_scroll_end: EventType[()] | None = None,
|
|
45
46
|
on_unmount: EventType[()] | None = None,
|
|
46
47
|
**props,
|
|
47
48
|
) -> Recharts:
|
|
@@ -80,9 +81,9 @@ class RechartsCharts(NoSSRComponent, MemoizationLeaf):
|
|
|
80
81
|
autofocus: bool | None = None,
|
|
81
82
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
82
83
|
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,
|
|
84
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
85
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
86
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
86
87
|
on_focus: EventType[()] | None = None,
|
|
87
88
|
on_mount: EventType[()] | None = None,
|
|
88
89
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -93,6 +94,7 @@ class RechartsCharts(NoSSRComponent, MemoizationLeaf):
|
|
|
93
94
|
on_mouse_over: EventType[()] | None = None,
|
|
94
95
|
on_mouse_up: EventType[()] | None = None,
|
|
95
96
|
on_scroll: EventType[()] | None = None,
|
|
97
|
+
on_scroll_end: EventType[()] | None = None,
|
|
96
98
|
on_unmount: EventType[()] | None = None,
|
|
97
99
|
**props,
|
|
98
100
|
) -> 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.
|
|
@@ -10,9 +10,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
|
|
@@ -131,9 +131,9 @@ class Toaster(Component):
|
|
|
131
131
|
autofocus: bool | None = None,
|
|
132
132
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
133
133
|
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,
|
|
134
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
135
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
136
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
137
137
|
on_focus: EventType[()] | None = None,
|
|
138
138
|
on_mount: EventType[()] | None = None,
|
|
139
139
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -144,6 +144,7 @@ class Toaster(Component):
|
|
|
144
144
|
on_mouse_over: EventType[()] | None = None,
|
|
145
145
|
on_mouse_up: EventType[()] | None = None,
|
|
146
146
|
on_scroll: EventType[()] | None = None,
|
|
147
|
+
on_scroll_end: EventType[()] | None = None,
|
|
147
148
|
on_unmount: EventType[()] | None = None,
|
|
148
149
|
**props,
|
|
149
150
|
) -> Toaster:
|
reflex/config.py
CHANGED
|
@@ -22,7 +22,7 @@ from reflex.environment import EnvVar as EnvVar
|
|
|
22
22
|
from reflex.environment import ExistingPath, interpret_env_var_value
|
|
23
23
|
from reflex.environment import env_var as env_var
|
|
24
24
|
from reflex.environment import environment as environment
|
|
25
|
-
from reflex.plugins import Plugin
|
|
25
|
+
from reflex.plugins import Plugin
|
|
26
26
|
from reflex.utils import console
|
|
27
27
|
from reflex.utils.exceptions import ConfigError
|
|
28
28
|
from reflex.utils.types import true_type_for_pydantic_field
|
|
@@ -53,19 +53,7 @@ def _load_dotenv_from_str(env_files: str) -> None:
|
|
|
53
53
|
|
|
54
54
|
def _load_dotenv_from_env():
|
|
55
55
|
"""Load environment variables from paths specified in REFLEX_ENV_FILE."""
|
|
56
|
-
show_deprecation = False
|
|
57
56
|
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
57
|
if env_env_file:
|
|
70
58
|
_load_dotenv_from_str(env_env_file)
|
|
71
59
|
|
|
@@ -261,36 +249,12 @@ class Config(Base):
|
|
|
261
249
|
# List of origins that are allowed to connect to the backend API.
|
|
262
250
|
cors_allowed_origins: list[str] = ["*"]
|
|
263
251
|
|
|
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
|
|
252
|
+
# Whether to use React strict mode.
|
|
277
253
|
react_strict_mode: bool = True
|
|
278
254
|
|
|
279
255
|
# Additional frontend packages to install.
|
|
280
256
|
frontend_packages: list[str] = []
|
|
281
257
|
|
|
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
258
|
# Indicate which type of state manager to use
|
|
295
259
|
state_manager_mode: constants.StateManagerMode = constants.StateManagerMode.DISK
|
|
296
260
|
|
|
@@ -339,25 +303,12 @@ class Config(Base):
|
|
|
339
303
|
super().__init__(*args, **kwargs)
|
|
340
304
|
|
|
341
305
|
# Clean up this code when we remove plain envvar in 0.8.0
|
|
342
|
-
show_deprecation = False
|
|
343
306
|
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
307
|
if env_loglevel is not None:
|
|
349
308
|
env_loglevel = LogLevel(env_loglevel.lower())
|
|
350
309
|
if env_loglevel or self.loglevel != LogLevel.DEFAULT:
|
|
351
310
|
console.set_log_level(env_loglevel or self.loglevel)
|
|
352
311
|
|
|
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
312
|
# Update the config from environment variables.
|
|
362
313
|
env_kwargs = self.update_from_env()
|
|
363
314
|
for key, env_value in env_kwargs.items():
|
|
@@ -368,23 +319,6 @@ class Config(Base):
|
|
|
368
319
|
self._non_default_attributes.update(kwargs)
|
|
369
320
|
self._replace_defaults(**kwargs)
|
|
370
321
|
|
|
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
322
|
if (
|
|
389
323
|
self.state_manager_mode == constants.StateManagerMode.REDIS
|
|
390
324
|
and not self.redis_url
|
|
@@ -430,18 +364,10 @@ If you are not using tailwind, set `tailwind` to `None` in rxconfig.py.""",
|
|
|
430
364
|
# Iterate over the fields.
|
|
431
365
|
for key, field in self.__fields__.items():
|
|
432
366
|
# The env var name is the key in uppercase.
|
|
367
|
+
environment_variable = None
|
|
433
368
|
for prefix in self._prefixes:
|
|
434
369
|
if environment_variable := os.environ.get(f"{prefix}{key.upper()}"):
|
|
435
370
|
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
371
|
|
|
446
372
|
# If the env var is set, override the config value.
|
|
447
373
|
if environment_variable and environment_variable.strip():
|
reflex/constants/__init__.py
CHANGED
reflex/constants/base.py
CHANGED
|
@@ -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,21 +198,47 @@ class Templates(SimpleNamespace):
|
|
|
194
198
|
CODE = "code"
|
|
195
199
|
|
|
196
200
|
|
|
197
|
-
class
|
|
201
|
+
class Javascript(SimpleNamespace):
|
|
202
|
+
"""Constants related to Javascript."""
|
|
203
|
+
|
|
204
|
+
# The node modules directory.
|
|
205
|
+
NODE_MODULES = "node_modules"
|
|
206
|
+
|
|
207
|
+
# The package lock file.
|
|
208
|
+
PACKAGE_LOCK = "package-lock.json"
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
class Next(Javascript):
|
|
198
212
|
"""Constants related to NextJS."""
|
|
199
213
|
|
|
200
214
|
# The NextJS config file
|
|
201
215
|
CONFIG_FILE = "next.config.js"
|
|
216
|
+
|
|
202
217
|
# The sitemap config file.
|
|
203
218
|
SITEMAP_CONFIG_FILE = "next-sitemap.config.js"
|
|
204
|
-
|
|
205
|
-
NODE_MODULES = "node_modules"
|
|
206
|
-
# The package lock file.
|
|
207
|
-
PACKAGE_LOCK = "package-lock.json"
|
|
219
|
+
|
|
208
220
|
# Regex to check for message displayed when frontend comes up
|
|
209
221
|
FRONTEND_LISTENING_REGEX = "Local:[\\s]+(.*)"
|
|
210
222
|
|
|
211
223
|
|
|
224
|
+
class ReactRouter(Javascript):
|
|
225
|
+
"""Constants related to React Router."""
|
|
226
|
+
|
|
227
|
+
# The react router config file
|
|
228
|
+
CONFIG_FILE = "react-router.config.js"
|
|
229
|
+
|
|
230
|
+
# Regex to check for message displayed when frontend comes up
|
|
231
|
+
DEV_FRONTEND_LISTENING_REGEX = r"Local:[\s]+"
|
|
232
|
+
|
|
233
|
+
# Regex to pattern the route path in the config file
|
|
234
|
+
# INFO Accepting connections at http://localhost:3000
|
|
235
|
+
PROD_FRONTEND_LISTENING_REGEX = r"Accepting connections at[\s]+"
|
|
236
|
+
|
|
237
|
+
FRONTEND_LISTENING_REGEX = (
|
|
238
|
+
rf"(?:{DEV_FRONTEND_LISTENING_REGEX}|{PROD_FRONTEND_LISTENING_REGEX})(.*)"
|
|
239
|
+
)
|
|
240
|
+
|
|
241
|
+
|
|
212
242
|
# Color mode variables
|
|
213
243
|
class ColorMode(SimpleNamespace):
|
|
214
244
|
"""Constants related to ColorMode."""
|
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.
|
|
@@ -83,11 +85,11 @@ class PageNames(SimpleNamespace):
|
|
|
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.
|
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"
|