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
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"""Shared field infrastructure for components and props."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from collections.abc import Callable
|
|
6
|
+
from dataclasses import _MISSING_TYPE, MISSING
|
|
7
|
+
from typing import Annotated, Any, Generic, TypeVar, get_origin
|
|
8
|
+
|
|
9
|
+
FIELD_TYPE = TypeVar("FIELD_TYPE")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class BaseField(Generic[FIELD_TYPE]):
|
|
13
|
+
"""Base field class used by internal metadata classes."""
|
|
14
|
+
|
|
15
|
+
def __init__(
|
|
16
|
+
self,
|
|
17
|
+
default: FIELD_TYPE | _MISSING_TYPE = MISSING,
|
|
18
|
+
default_factory: Callable[[], FIELD_TYPE] | None = None,
|
|
19
|
+
annotated_type: type[Any] | _MISSING_TYPE = MISSING,
|
|
20
|
+
) -> None:
|
|
21
|
+
"""Initialize the field.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
default: The default value for the field.
|
|
25
|
+
default_factory: The default factory for the field.
|
|
26
|
+
annotated_type: The annotated type for the field.
|
|
27
|
+
"""
|
|
28
|
+
self.default = default
|
|
29
|
+
self.default_factory = default_factory
|
|
30
|
+
self.outer_type_ = self.annotated_type = annotated_type
|
|
31
|
+
|
|
32
|
+
# Process type annotation
|
|
33
|
+
type_origin = get_origin(annotated_type) or annotated_type
|
|
34
|
+
if type_origin is Annotated:
|
|
35
|
+
type_origin = annotated_type.__origin__ # pyright: ignore [reportAttributeAccessIssue]
|
|
36
|
+
# For Annotated types, use the actual type inside the annotation
|
|
37
|
+
self.type_ = annotated_type
|
|
38
|
+
else:
|
|
39
|
+
# For other types (including Union), preserve the original type
|
|
40
|
+
self.type_ = annotated_type
|
|
41
|
+
self.type_origin = type_origin
|
|
42
|
+
|
|
43
|
+
def default_value(self) -> FIELD_TYPE:
|
|
44
|
+
"""Get the default value for the field.
|
|
45
|
+
|
|
46
|
+
Returns:
|
|
47
|
+
The default value for the field.
|
|
48
|
+
|
|
49
|
+
Raises:
|
|
50
|
+
ValueError: If no default value or factory is provided.
|
|
51
|
+
"""
|
|
52
|
+
if self.default is not MISSING:
|
|
53
|
+
return self.default
|
|
54
|
+
if self.default_factory is not None:
|
|
55
|
+
return self.default_factory()
|
|
56
|
+
msg = "No default value or factory provided."
|
|
57
|
+
raise ValueError(msg)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class FieldBasedMeta(type):
|
|
61
|
+
"""Shared metaclass for field-based classes like components and props.
|
|
62
|
+
|
|
63
|
+
Provides common field inheritance and processing logic for both
|
|
64
|
+
PropsBaseMeta and BaseComponentMeta.
|
|
65
|
+
"""
|
|
66
|
+
|
|
67
|
+
def __new__(cls, name: str, bases: tuple[type], namespace: dict[str, Any]) -> type:
|
|
68
|
+
"""Create a new field-based class.
|
|
69
|
+
|
|
70
|
+
Args:
|
|
71
|
+
name: The name of the class.
|
|
72
|
+
bases: The base classes.
|
|
73
|
+
namespace: The class namespace.
|
|
74
|
+
|
|
75
|
+
Returns:
|
|
76
|
+
The new class.
|
|
77
|
+
"""
|
|
78
|
+
# Collect inherited fields from base classes
|
|
79
|
+
inherited_fields = cls._collect_inherited_fields(bases)
|
|
80
|
+
|
|
81
|
+
# Get annotations from the namespace
|
|
82
|
+
annotations = cls._resolve_annotations(namespace, name)
|
|
83
|
+
|
|
84
|
+
# Process field overrides (fields with values but no annotations)
|
|
85
|
+
own_fields = cls._process_field_overrides(
|
|
86
|
+
namespace, annotations, inherited_fields
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
# Process annotated fields
|
|
90
|
+
own_fields.update(
|
|
91
|
+
cls._process_annotated_fields(namespace, annotations, inherited_fields)
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
# Finalize fields and store on class
|
|
95
|
+
cls._finalize_fields(namespace, inherited_fields, own_fields)
|
|
96
|
+
|
|
97
|
+
return super().__new__(cls, name, bases, namespace)
|
|
98
|
+
|
|
99
|
+
@classmethod
|
|
100
|
+
def _collect_inherited_fields(cls, bases: tuple[type]) -> dict[str, Any]:
|
|
101
|
+
inherited_fields: dict[str, Any] = {}
|
|
102
|
+
|
|
103
|
+
# Collect inherited fields from base classes
|
|
104
|
+
for base in bases[::-1]:
|
|
105
|
+
if hasattr(base, "_inherited_fields"):
|
|
106
|
+
inherited_fields.update(base._inherited_fields)
|
|
107
|
+
for base in bases[::-1]:
|
|
108
|
+
if hasattr(base, "_own_fields"):
|
|
109
|
+
inherited_fields.update(base._own_fields)
|
|
110
|
+
|
|
111
|
+
return inherited_fields
|
|
112
|
+
|
|
113
|
+
@classmethod
|
|
114
|
+
def _resolve_annotations(
|
|
115
|
+
cls, namespace: dict[str, Any], name: str
|
|
116
|
+
) -> dict[str, Any]:
|
|
117
|
+
return namespace.get("__annotations__", {})
|
|
118
|
+
|
|
119
|
+
@classmethod
|
|
120
|
+
def _process_field_overrides(
|
|
121
|
+
cls,
|
|
122
|
+
namespace: dict[str, Any],
|
|
123
|
+
annotations: dict[str, Any],
|
|
124
|
+
inherited_fields: dict[str, Any],
|
|
125
|
+
) -> dict[str, Any]:
|
|
126
|
+
own_fields: dict[str, Any] = {}
|
|
127
|
+
|
|
128
|
+
for key, value in namespace.items():
|
|
129
|
+
if key not in annotations and key in inherited_fields:
|
|
130
|
+
inherited_field = inherited_fields[key]
|
|
131
|
+
new_field = cls._create_field(
|
|
132
|
+
annotated_type=inherited_field.annotated_type,
|
|
133
|
+
default=value,
|
|
134
|
+
default_factory=None,
|
|
135
|
+
)
|
|
136
|
+
own_fields[key] = new_field
|
|
137
|
+
|
|
138
|
+
return own_fields
|
|
139
|
+
|
|
140
|
+
@classmethod
|
|
141
|
+
def _process_annotated_fields(
|
|
142
|
+
cls,
|
|
143
|
+
namespace: dict[str, Any],
|
|
144
|
+
annotations: dict[str, Any],
|
|
145
|
+
inherited_fields: dict[str, Any],
|
|
146
|
+
) -> dict[str, Any]:
|
|
147
|
+
raise NotImplementedError
|
|
148
|
+
|
|
149
|
+
@classmethod
|
|
150
|
+
def _create_field(
|
|
151
|
+
cls,
|
|
152
|
+
annotated_type: Any,
|
|
153
|
+
default: Any = MISSING,
|
|
154
|
+
default_factory: Callable[[], Any] | None = None,
|
|
155
|
+
) -> Any:
|
|
156
|
+
raise NotImplementedError
|
|
157
|
+
|
|
158
|
+
@classmethod
|
|
159
|
+
def _finalize_fields(
|
|
160
|
+
cls,
|
|
161
|
+
namespace: dict[str, Any],
|
|
162
|
+
inherited_fields: dict[str, Any],
|
|
163
|
+
own_fields: dict[str, Any],
|
|
164
|
+
) -> None:
|
|
165
|
+
# Combine all fields
|
|
166
|
+
all_fields = inherited_fields | own_fields
|
|
167
|
+
|
|
168
|
+
# Set field names for compatibility
|
|
169
|
+
for field_name, field in all_fields.items():
|
|
170
|
+
field._name = field_name
|
|
171
|
+
|
|
172
|
+
# Store field mappings on the class
|
|
173
|
+
namespace["_own_fields"] = own_fields
|
|
174
|
+
namespace["_inherited_fields"] = inherited_fields
|
|
175
|
+
namespace["_fields"] = all_fields
|
|
@@ -5,7 +5,7 @@ from __future__ import annotations
|
|
|
5
5
|
from collections.abc import Sequence
|
|
6
6
|
from typing import Any
|
|
7
7
|
|
|
8
|
-
from reflex.components.component import
|
|
8
|
+
from reflex.components.component import NoSSRComponent
|
|
9
9
|
from reflex.components.tags import Tag
|
|
10
10
|
from reflex.utils import types
|
|
11
11
|
from reflex.utils.imports import ImportDict
|
|
@@ -13,7 +13,7 @@ from reflex.utils.serializers import serialize
|
|
|
13
13
|
from reflex.vars.base import LiteralVar, Var, is_computed_var
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
class Gridjs(
|
|
16
|
+
class Gridjs(NoSSRComponent):
|
|
17
17
|
"""A component that wraps a nivo bar component."""
|
|
18
18
|
|
|
19
19
|
library = "gridjs-react@6.1.1"
|
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
from collections.abc import Mapping, Sequence
|
|
7
7
|
from typing import Any, overload
|
|
8
8
|
|
|
9
|
-
from reflex.components.component import
|
|
9
|
+
from reflex.components.component import 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.utils.imports import ImportDict
|
|
13
13
|
from reflex.vars.base import Var
|
|
14
14
|
|
|
15
|
-
class Gridjs(
|
|
15
|
+
class Gridjs(NoSSRComponent):
|
|
16
16
|
@overload
|
|
17
17
|
@classmethod
|
|
18
18
|
def create( # type: ignore
|
|
@@ -30,9 +30,9 @@ class Gridjs(Component):
|
|
|
30
30
|
autofocus: bool | None = None,
|
|
31
31
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
32
32
|
on_blur: EventType[()] | None = None,
|
|
33
|
-
on_click: EventType[()] | None = None,
|
|
34
|
-
on_context_menu: EventType[()] | None = None,
|
|
35
|
-
on_double_click: EventType[()] | None = None,
|
|
33
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
34
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
35
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
36
36
|
on_focus: EventType[()] | None = None,
|
|
37
37
|
on_mount: EventType[()] | None = None,
|
|
38
38
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -43,6 +43,7 @@ class Gridjs(Component):
|
|
|
43
43
|
on_mouse_over: EventType[()] | None = None,
|
|
44
44
|
on_mouse_up: EventType[()] | None = None,
|
|
45
45
|
on_scroll: EventType[()] | None = None,
|
|
46
|
+
on_scroll_end: EventType[()] | None = None,
|
|
46
47
|
on_unmount: EventType[()] | None = None,
|
|
47
48
|
**props,
|
|
48
49
|
) -> Gridjs:
|
|
@@ -87,9 +88,9 @@ class DataTable(Gridjs):
|
|
|
87
88
|
autofocus: bool | None = None,
|
|
88
89
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
89
90
|
on_blur: EventType[()] | None = None,
|
|
90
|
-
on_click: EventType[()] | None = None,
|
|
91
|
-
on_context_menu: EventType[()] | None = None,
|
|
92
|
-
on_double_click: EventType[()] | None = None,
|
|
91
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
92
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
93
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
93
94
|
on_focus: EventType[()] | None = None,
|
|
94
95
|
on_mount: EventType[()] | None = None,
|
|
95
96
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -100,6 +101,7 @@ class DataTable(Gridjs):
|
|
|
100
101
|
on_mouse_over: EventType[()] | None = None,
|
|
101
102
|
on_mouse_up: EventType[()] | None = None,
|
|
102
103
|
on_scroll: EventType[()] | None = None,
|
|
104
|
+
on_scroll_end: EventType[()] | None = None,
|
|
103
105
|
on_unmount: EventType[()] | None = None,
|
|
104
106
|
**props,
|
|
105
107
|
) -> DataTable:
|
reflex/components/lucide/icon.py
CHANGED
|
@@ -6,11 +6,13 @@ from reflex.utils.imports import ImportVar
|
|
|
6
6
|
from reflex.vars.base import LiteralVar, Var
|
|
7
7
|
from reflex.vars.sequence import LiteralStringVar, StringVar
|
|
8
8
|
|
|
9
|
+
LUCIDE_LIBRARY = "lucide-react@0.511.0"
|
|
10
|
+
|
|
9
11
|
|
|
10
12
|
class LucideIconComponent(Component):
|
|
11
13
|
"""Lucide Icon Component."""
|
|
12
14
|
|
|
13
|
-
library =
|
|
15
|
+
library = LUCIDE_LIBRARY
|
|
14
16
|
|
|
15
17
|
|
|
16
18
|
class Icon(LucideIconComponent):
|
|
@@ -96,7 +98,9 @@ class DynamicIcon(LucideIconComponent):
|
|
|
96
98
|
_imports = super()._get_imports()
|
|
97
99
|
if self.library:
|
|
98
100
|
_imports.pop(self.library)
|
|
99
|
-
_imports[
|
|
101
|
+
_imports[LUCIDE_LIBRARY] = [
|
|
102
|
+
ImportVar("DynamicIcon", package_path="/dynamic.mjs")
|
|
103
|
+
]
|
|
100
104
|
return _imports
|
|
101
105
|
|
|
102
106
|
|
|
@@ -8,9 +8,11 @@ from typing import Any, overload
|
|
|
8
8
|
|
|
9
9
|
from reflex.components.component import Component
|
|
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
|
+
LUCIDE_LIBRARY = "lucide-react@0.511.0"
|
|
15
|
+
|
|
14
16
|
class LucideIconComponent(Component):
|
|
15
17
|
@overload
|
|
16
18
|
@classmethod
|
|
@@ -29,9 +31,9 @@ class LucideIconComponent(Component):
|
|
|
29
31
|
autofocus: bool | None = None,
|
|
30
32
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
31
33
|
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,
|
|
34
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
35
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
36
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
35
37
|
on_focus: EventType[()] | None = None,
|
|
36
38
|
on_mount: EventType[()] | None = None,
|
|
37
39
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -42,6 +44,7 @@ class LucideIconComponent(Component):
|
|
|
42
44
|
on_mouse_over: EventType[()] | None = None,
|
|
43
45
|
on_mouse_up: EventType[()] | None = None,
|
|
44
46
|
on_scroll: EventType[()] | None = None,
|
|
47
|
+
on_scroll_end: EventType[()] | None = None,
|
|
45
48
|
on_unmount: EventType[()] | None = None,
|
|
46
49
|
**props,
|
|
47
50
|
) -> LucideIconComponent:
|
|
@@ -81,9 +84,9 @@ class Icon(LucideIconComponent):
|
|
|
81
84
|
autofocus: bool | None = None,
|
|
82
85
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
83
86
|
on_blur: EventType[()] | None = None,
|
|
84
|
-
on_click: EventType[()] | None = None,
|
|
85
|
-
on_context_menu: EventType[()] | None = None,
|
|
86
|
-
on_double_click: EventType[()] | None = None,
|
|
87
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
88
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
89
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
87
90
|
on_focus: EventType[()] | None = None,
|
|
88
91
|
on_mount: EventType[()] | None = None,
|
|
89
92
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -94,6 +97,7 @@ class Icon(LucideIconComponent):
|
|
|
94
97
|
on_mouse_over: EventType[()] | None = None,
|
|
95
98
|
on_mouse_up: EventType[()] | None = None,
|
|
96
99
|
on_scroll: EventType[()] | None = None,
|
|
100
|
+
on_scroll_end: EventType[()] | None = None,
|
|
97
101
|
on_unmount: EventType[()] | None = None,
|
|
98
102
|
**props,
|
|
99
103
|
) -> Icon:
|
|
@@ -140,9 +144,9 @@ class DynamicIcon(LucideIconComponent):
|
|
|
140
144
|
autofocus: bool | None = None,
|
|
141
145
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
142
146
|
on_blur: EventType[()] | None = None,
|
|
143
|
-
on_click: EventType[()] | None = None,
|
|
144
|
-
on_context_menu: EventType[()] | None = None,
|
|
145
|
-
on_double_click: EventType[()] | None = None,
|
|
147
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
148
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
149
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
146
150
|
on_focus: EventType[()] | None = None,
|
|
147
151
|
on_mount: EventType[()] | None = None,
|
|
148
152
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -153,6 +157,7 @@ class DynamicIcon(LucideIconComponent):
|
|
|
153
157
|
on_mouse_over: EventType[()] | None = None,
|
|
154
158
|
on_mouse_up: EventType[()] | None = None,
|
|
155
159
|
on_scroll: EventType[()] | None = None,
|
|
160
|
+
on_scroll_end: EventType[()] | None = None,
|
|
156
161
|
on_unmount: EventType[()] | None = None,
|
|
157
162
|
**props,
|
|
158
163
|
) -> DynamicIcon:
|
|
@@ -10,7 +10,7 @@ from typing import Any, overload
|
|
|
10
10
|
|
|
11
11
|
from reflex.components.component import Component
|
|
12
12
|
from reflex.components.core.breakpoints import Breakpoints
|
|
13
|
-
from reflex.event import EventType
|
|
13
|
+
from reflex.event import EventType, PointerEventInfo
|
|
14
14
|
from reflex.utils.imports import ImportDict
|
|
15
15
|
from reflex.vars.base import LiteralVar, Var, VarData
|
|
16
16
|
|
|
@@ -67,9 +67,9 @@ class Markdown(Component):
|
|
|
67
67
|
autofocus: bool | None = None,
|
|
68
68
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
69
69
|
on_blur: EventType[()] | None = None,
|
|
70
|
-
on_click: EventType[()] | None = None,
|
|
71
|
-
on_context_menu: EventType[()] | None = None,
|
|
72
|
-
on_double_click: EventType[()] | None = None,
|
|
70
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
71
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
72
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
73
73
|
on_focus: EventType[()] | None = None,
|
|
74
74
|
on_mount: EventType[()] | None = None,
|
|
75
75
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -80,6 +80,7 @@ class Markdown(Component):
|
|
|
80
80
|
on_mouse_over: EventType[()] | None = None,
|
|
81
81
|
on_mouse_up: EventType[()] | None = None,
|
|
82
82
|
on_scroll: EventType[()] | None = None,
|
|
83
|
+
on_scroll_end: EventType[()] | None = None,
|
|
83
84
|
on_unmount: EventType[()] | None = None,
|
|
84
85
|
**props,
|
|
85
86
|
) -> Markdown:
|
|
@@ -10,7 +10,7 @@ from typing import Any, overload
|
|
|
10
10
|
|
|
11
11
|
from reflex.components.component import NoSSRComponent
|
|
12
12
|
from reflex.components.core.breakpoints import Breakpoints
|
|
13
|
-
from reflex.event import EventType
|
|
13
|
+
from reflex.event import EventType, PointerEventInfo
|
|
14
14
|
from reflex.utils.imports import ImportDict
|
|
15
15
|
from reflex.vars.base import Var
|
|
16
16
|
|
|
@@ -73,9 +73,9 @@ class Moment(NoSSRComponent):
|
|
|
73
73
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
74
74
|
on_blur: EventType[()] | None = None,
|
|
75
75
|
on_change: EventType[()] | EventType[str] | None = None,
|
|
76
|
-
on_click: EventType[()] | None = None,
|
|
77
|
-
on_context_menu: EventType[()] | None = None,
|
|
78
|
-
on_double_click: EventType[()] | None = None,
|
|
76
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
77
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
78
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
79
79
|
on_focus: EventType[()] | None = None,
|
|
80
80
|
on_mount: EventType[()] | None = None,
|
|
81
81
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -86,6 +86,7 @@ class Moment(NoSSRComponent):
|
|
|
86
86
|
on_mouse_over: EventType[()] | None = None,
|
|
87
87
|
on_mouse_up: EventType[()] | None = None,
|
|
88
88
|
on_scroll: EventType[()] | None = None,
|
|
89
|
+
on_scroll_end: EventType[()] | None = None,
|
|
89
90
|
on_unmount: EventType[()] | None = None,
|
|
90
91
|
**props,
|
|
91
92
|
) -> Moment:
|
|
@@ -8,7 +8,7 @@ from typing import Any, TypedDict, TypeVar, overload
|
|
|
8
8
|
|
|
9
9
|
from reflex.components.component import 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.utils import console
|
|
13
13
|
from reflex.utils.imports import ImportDict
|
|
14
14
|
from reflex.vars.base import Var
|
|
@@ -78,7 +78,7 @@ class Plotly(NoSSRComponent):
|
|
|
78
78
|
on_blur: EventType[()] | None = None,
|
|
79
79
|
on_button_clicked: EventType[()] | None = None,
|
|
80
80
|
on_click: EventType[()] | EventType[list[Point]] | None = None,
|
|
81
|
-
on_context_menu: EventType[()] | None = None,
|
|
81
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
82
82
|
on_deselect: EventType[()] | None = None,
|
|
83
83
|
on_double_click: EventType[()] | None = None,
|
|
84
84
|
on_focus: EventType[()] | None = None,
|
|
@@ -96,6 +96,7 @@ class Plotly(NoSSRComponent):
|
|
|
96
96
|
on_relayouting: EventType[()] | None = None,
|
|
97
97
|
on_restyle: EventType[()] | None = None,
|
|
98
98
|
on_scroll: EventType[()] | None = None,
|
|
99
|
+
on_scroll_end: EventType[()] | None = None,
|
|
99
100
|
on_selected: EventType[()] | EventType[list[Point]] | None = None,
|
|
100
101
|
on_selecting: EventType[()] | EventType[list[Point]] | None = None,
|
|
101
102
|
on_transition_interrupted: EventType[()] | None = None,
|
|
@@ -182,7 +183,7 @@ class PlotlyBasic(Plotly):
|
|
|
182
183
|
on_blur: EventType[()] | None = None,
|
|
183
184
|
on_button_clicked: EventType[()] | None = None,
|
|
184
185
|
on_click: EventType[()] | EventType[list[Point]] | None = None,
|
|
185
|
-
on_context_menu: EventType[()] | None = None,
|
|
186
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
186
187
|
on_deselect: EventType[()] | None = None,
|
|
187
188
|
on_double_click: EventType[()] | None = None,
|
|
188
189
|
on_focus: EventType[()] | None = None,
|
|
@@ -200,6 +201,7 @@ class PlotlyBasic(Plotly):
|
|
|
200
201
|
on_relayouting: EventType[()] | None = None,
|
|
201
202
|
on_restyle: EventType[()] | None = None,
|
|
202
203
|
on_scroll: EventType[()] | None = None,
|
|
204
|
+
on_scroll_end: EventType[()] | None = None,
|
|
203
205
|
on_selected: EventType[()] | EventType[list[Point]] | None = None,
|
|
204
206
|
on_selecting: EventType[()] | EventType[list[Point]] | None = None,
|
|
205
207
|
on_transition_interrupted: EventType[()] | None = None,
|
|
@@ -282,7 +284,7 @@ class PlotlyCartesian(Plotly):
|
|
|
282
284
|
on_blur: EventType[()] | None = None,
|
|
283
285
|
on_button_clicked: EventType[()] | None = None,
|
|
284
286
|
on_click: EventType[()] | EventType[list[Point]] | None = None,
|
|
285
|
-
on_context_menu: EventType[()] | None = None,
|
|
287
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
286
288
|
on_deselect: EventType[()] | None = None,
|
|
287
289
|
on_double_click: EventType[()] | None = None,
|
|
288
290
|
on_focus: EventType[()] | None = None,
|
|
@@ -300,6 +302,7 @@ class PlotlyCartesian(Plotly):
|
|
|
300
302
|
on_relayouting: EventType[()] | None = None,
|
|
301
303
|
on_restyle: EventType[()] | None = None,
|
|
302
304
|
on_scroll: EventType[()] | None = None,
|
|
305
|
+
on_scroll_end: EventType[()] | None = None,
|
|
303
306
|
on_selected: EventType[()] | EventType[list[Point]] | None = None,
|
|
304
307
|
on_selecting: EventType[()] | EventType[list[Point]] | None = None,
|
|
305
308
|
on_transition_interrupted: EventType[()] | None = None,
|
|
@@ -382,7 +385,7 @@ class PlotlyGeo(Plotly):
|
|
|
382
385
|
on_blur: EventType[()] | None = None,
|
|
383
386
|
on_button_clicked: EventType[()] | None = None,
|
|
384
387
|
on_click: EventType[()] | EventType[list[Point]] | None = None,
|
|
385
|
-
on_context_menu: EventType[()] | None = None,
|
|
388
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
386
389
|
on_deselect: EventType[()] | None = None,
|
|
387
390
|
on_double_click: EventType[()] | None = None,
|
|
388
391
|
on_focus: EventType[()] | None = None,
|
|
@@ -400,6 +403,7 @@ class PlotlyGeo(Plotly):
|
|
|
400
403
|
on_relayouting: EventType[()] | None = None,
|
|
401
404
|
on_restyle: EventType[()] | None = None,
|
|
402
405
|
on_scroll: EventType[()] | None = None,
|
|
406
|
+
on_scroll_end: EventType[()] | None = None,
|
|
403
407
|
on_selected: EventType[()] | EventType[list[Point]] | None = None,
|
|
404
408
|
on_selecting: EventType[()] | EventType[list[Point]] | None = None,
|
|
405
409
|
on_transition_interrupted: EventType[()] | None = None,
|
|
@@ -482,7 +486,7 @@ class PlotlyGl3d(Plotly):
|
|
|
482
486
|
on_blur: EventType[()] | None = None,
|
|
483
487
|
on_button_clicked: EventType[()] | None = None,
|
|
484
488
|
on_click: EventType[()] | EventType[list[Point]] | None = None,
|
|
485
|
-
on_context_menu: EventType[()] | None = None,
|
|
489
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
486
490
|
on_deselect: EventType[()] | None = None,
|
|
487
491
|
on_double_click: EventType[()] | None = None,
|
|
488
492
|
on_focus: EventType[()] | None = None,
|
|
@@ -500,6 +504,7 @@ class PlotlyGl3d(Plotly):
|
|
|
500
504
|
on_relayouting: EventType[()] | None = None,
|
|
501
505
|
on_restyle: EventType[()] | None = None,
|
|
502
506
|
on_scroll: EventType[()] | None = None,
|
|
507
|
+
on_scroll_end: EventType[()] | None = None,
|
|
503
508
|
on_selected: EventType[()] | EventType[list[Point]] | None = None,
|
|
504
509
|
on_selecting: EventType[()] | EventType[list[Point]] | None = None,
|
|
505
510
|
on_transition_interrupted: EventType[()] | None = None,
|
|
@@ -582,7 +587,7 @@ class PlotlyGl2d(Plotly):
|
|
|
582
587
|
on_blur: EventType[()] | None = None,
|
|
583
588
|
on_button_clicked: EventType[()] | None = None,
|
|
584
589
|
on_click: EventType[()] | EventType[list[Point]] | None = None,
|
|
585
|
-
on_context_menu: EventType[()] | None = None,
|
|
590
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
586
591
|
on_deselect: EventType[()] | None = None,
|
|
587
592
|
on_double_click: EventType[()] | None = None,
|
|
588
593
|
on_focus: EventType[()] | None = None,
|
|
@@ -600,6 +605,7 @@ class PlotlyGl2d(Plotly):
|
|
|
600
605
|
on_relayouting: EventType[()] | None = None,
|
|
601
606
|
on_restyle: EventType[()] | None = None,
|
|
602
607
|
on_scroll: EventType[()] | None = None,
|
|
608
|
+
on_scroll_end: EventType[()] | None = None,
|
|
603
609
|
on_selected: EventType[()] | EventType[list[Point]] | None = None,
|
|
604
610
|
on_selecting: EventType[()] | EventType[list[Point]] | None = None,
|
|
605
611
|
on_transition_interrupted: EventType[()] | None = None,
|
|
@@ -682,7 +688,7 @@ class PlotlyMapbox(Plotly):
|
|
|
682
688
|
on_blur: EventType[()] | None = None,
|
|
683
689
|
on_button_clicked: EventType[()] | None = None,
|
|
684
690
|
on_click: EventType[()] | EventType[list[Point]] | None = None,
|
|
685
|
-
on_context_menu: EventType[()] | None = None,
|
|
691
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
686
692
|
on_deselect: EventType[()] | None = None,
|
|
687
693
|
on_double_click: EventType[()] | None = None,
|
|
688
694
|
on_focus: EventType[()] | None = None,
|
|
@@ -700,6 +706,7 @@ class PlotlyMapbox(Plotly):
|
|
|
700
706
|
on_relayouting: EventType[()] | None = None,
|
|
701
707
|
on_restyle: EventType[()] | None = None,
|
|
702
708
|
on_scroll: EventType[()] | None = None,
|
|
709
|
+
on_scroll_end: EventType[()] | None = None,
|
|
703
710
|
on_selected: EventType[()] | EventType[list[Point]] | None = None,
|
|
704
711
|
on_selecting: EventType[()] | EventType[list[Point]] | None = None,
|
|
705
712
|
on_transition_interrupted: EventType[()] | None = None,
|
|
@@ -782,7 +789,7 @@ class PlotlyFinance(Plotly):
|
|
|
782
789
|
on_blur: EventType[()] | None = None,
|
|
783
790
|
on_button_clicked: EventType[()] | None = None,
|
|
784
791
|
on_click: EventType[()] | EventType[list[Point]] | None = None,
|
|
785
|
-
on_context_menu: EventType[()] | None = None,
|
|
792
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
786
793
|
on_deselect: EventType[()] | None = None,
|
|
787
794
|
on_double_click: EventType[()] | None = None,
|
|
788
795
|
on_focus: EventType[()] | None = None,
|
|
@@ -800,6 +807,7 @@ class PlotlyFinance(Plotly):
|
|
|
800
807
|
on_relayouting: EventType[()] | None = None,
|
|
801
808
|
on_restyle: EventType[()] | None = None,
|
|
802
809
|
on_scroll: EventType[()] | None = None,
|
|
810
|
+
on_scroll_end: EventType[()] | None = None,
|
|
803
811
|
on_selected: EventType[()] | EventType[list[Point]] | None = None,
|
|
804
812
|
on_selecting: EventType[()] | EventType[list[Point]] | None = None,
|
|
805
813
|
on_transition_interrupted: EventType[()] | None = None,
|
|
@@ -882,7 +890,7 @@ class PlotlyStrict(Plotly):
|
|
|
882
890
|
on_blur: EventType[()] | None = None,
|
|
883
891
|
on_button_clicked: EventType[()] | None = None,
|
|
884
892
|
on_click: EventType[()] | EventType[list[Point]] | None = None,
|
|
885
|
-
on_context_menu: EventType[()] | None = None,
|
|
893
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
886
894
|
on_deselect: EventType[()] | None = None,
|
|
887
895
|
on_double_click: EventType[()] | None = None,
|
|
888
896
|
on_focus: EventType[()] | None = None,
|
|
@@ -900,6 +908,7 @@ class PlotlyStrict(Plotly):
|
|
|
900
908
|
on_relayouting: EventType[()] | None = None,
|
|
901
909
|
on_restyle: EventType[()] | None = None,
|
|
902
910
|
on_scroll: EventType[()] | None = None,
|
|
911
|
+
on_scroll_end: EventType[()] | None = None,
|
|
903
912
|
on_selected: EventType[()] | EventType[list[Point]] | None = None,
|
|
904
913
|
on_selecting: EventType[()] | EventType[list[Point]] | None = None,
|
|
905
914
|
on_transition_interrupted: EventType[()] | None = None,
|