reflex 0.7.14a6__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 +86 -135
- 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.14a6.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/experimental/layout.pyi +0 -814
- reflex-0.7.14a6.dist-info/RECORD +0 -408
- {reflex-0.7.14a6.dist-info → reflex-0.8.0.dist-info}/WHEEL +0 -0
- {reflex-0.7.14a6.dist-info → reflex-0.8.0.dist-info}/entry_points.txt +0 -0
- {reflex-0.7.14a6.dist-info → reflex-0.8.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -4,18 +4,17 @@
|
|
|
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
|
-
from reflex.event import EventType
|
|
10
|
+
from reflex.event import EventType, PointerEventInfo
|
|
11
11
|
from reflex.vars.base import Var
|
|
12
12
|
|
|
13
13
|
from .base import BaseHTML
|
|
14
14
|
|
|
15
15
|
class Blockquote(BaseHTML):
|
|
16
|
-
@overload
|
|
17
16
|
@classmethod
|
|
18
|
-
def create(
|
|
17
|
+
def create(
|
|
19
18
|
cls,
|
|
20
19
|
*children,
|
|
21
20
|
cite: Var[str] | str | None = None,
|
|
@@ -209,9 +208,9 @@ class Blockquote(BaseHTML):
|
|
|
209
208
|
autofocus: bool | None = None,
|
|
210
209
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
211
210
|
on_blur: EventType[()] | None = None,
|
|
212
|
-
on_click: EventType[()] | None = None,
|
|
213
|
-
on_context_menu: EventType[()] | None = None,
|
|
214
|
-
on_double_click: EventType[()] | None = None,
|
|
211
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
212
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
213
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
215
214
|
on_focus: EventType[()] | None = None,
|
|
216
215
|
on_mount: EventType[()] | None = None,
|
|
217
216
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -222,6 +221,7 @@ class Blockquote(BaseHTML):
|
|
|
222
221
|
on_mouse_over: EventType[()] | None = None,
|
|
223
222
|
on_mouse_up: EventType[()] | None = None,
|
|
224
223
|
on_scroll: EventType[()] | None = None,
|
|
224
|
+
on_scroll_end: EventType[()] | None = None,
|
|
225
225
|
on_unmount: EventType[()] | None = None,
|
|
226
226
|
**props,
|
|
227
227
|
) -> Blockquote:
|
|
@@ -260,9 +260,8 @@ class Blockquote(BaseHTML):
|
|
|
260
260
|
"""
|
|
261
261
|
|
|
262
262
|
class Dd(BaseHTML):
|
|
263
|
-
@overload
|
|
264
263
|
@classmethod
|
|
265
|
-
def create(
|
|
264
|
+
def create(
|
|
266
265
|
cls,
|
|
267
266
|
*children,
|
|
268
267
|
access_key: Var[str] | str | None = None,
|
|
@@ -455,9 +454,9 @@ class Dd(BaseHTML):
|
|
|
455
454
|
autofocus: bool | None = None,
|
|
456
455
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
457
456
|
on_blur: EventType[()] | None = None,
|
|
458
|
-
on_click: EventType[()] | None = None,
|
|
459
|
-
on_context_menu: EventType[()] | None = None,
|
|
460
|
-
on_double_click: EventType[()] | None = None,
|
|
457
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
458
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
459
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
461
460
|
on_focus: EventType[()] | None = None,
|
|
462
461
|
on_mount: EventType[()] | None = None,
|
|
463
462
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -468,6 +467,7 @@ class Dd(BaseHTML):
|
|
|
468
467
|
on_mouse_over: EventType[()] | None = None,
|
|
469
468
|
on_mouse_up: EventType[()] | None = None,
|
|
470
469
|
on_scroll: EventType[()] | None = None,
|
|
470
|
+
on_scroll_end: EventType[()] | None = None,
|
|
471
471
|
on_unmount: EventType[()] | None = None,
|
|
472
472
|
**props,
|
|
473
473
|
) -> Dd:
|
|
@@ -505,9 +505,8 @@ class Dd(BaseHTML):
|
|
|
505
505
|
"""
|
|
506
506
|
|
|
507
507
|
class Div(BaseHTML):
|
|
508
|
-
@overload
|
|
509
508
|
@classmethod
|
|
510
|
-
def create(
|
|
509
|
+
def create(
|
|
511
510
|
cls,
|
|
512
511
|
*children,
|
|
513
512
|
access_key: Var[str] | str | None = None,
|
|
@@ -700,9 +699,9 @@ class Div(BaseHTML):
|
|
|
700
699
|
autofocus: bool | None = None,
|
|
701
700
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
702
701
|
on_blur: EventType[()] | None = None,
|
|
703
|
-
on_click: EventType[()] | None = None,
|
|
704
|
-
on_context_menu: EventType[()] | None = None,
|
|
705
|
-
on_double_click: EventType[()] | None = None,
|
|
702
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
703
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
704
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
706
705
|
on_focus: EventType[()] | None = None,
|
|
707
706
|
on_mount: EventType[()] | None = None,
|
|
708
707
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -713,6 +712,7 @@ class Div(BaseHTML):
|
|
|
713
712
|
on_mouse_over: EventType[()] | None = None,
|
|
714
713
|
on_mouse_up: EventType[()] | None = None,
|
|
715
714
|
on_scroll: EventType[()] | None = None,
|
|
715
|
+
on_scroll_end: EventType[()] | None = None,
|
|
716
716
|
on_unmount: EventType[()] | None = None,
|
|
717
717
|
**props,
|
|
718
718
|
) -> Div:
|
|
@@ -750,9 +750,8 @@ class Div(BaseHTML):
|
|
|
750
750
|
"""
|
|
751
751
|
|
|
752
752
|
class Dl(BaseHTML):
|
|
753
|
-
@overload
|
|
754
753
|
@classmethod
|
|
755
|
-
def create(
|
|
754
|
+
def create(
|
|
756
755
|
cls,
|
|
757
756
|
*children,
|
|
758
757
|
access_key: Var[str] | str | None = None,
|
|
@@ -945,9 +944,9 @@ class Dl(BaseHTML):
|
|
|
945
944
|
autofocus: bool | None = None,
|
|
946
945
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
947
946
|
on_blur: EventType[()] | None = None,
|
|
948
|
-
on_click: EventType[()] | None = None,
|
|
949
|
-
on_context_menu: EventType[()] | None = None,
|
|
950
|
-
on_double_click: EventType[()] | None = None,
|
|
947
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
948
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
949
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
951
950
|
on_focus: EventType[()] | None = None,
|
|
952
951
|
on_mount: EventType[()] | None = None,
|
|
953
952
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -958,6 +957,7 @@ class Dl(BaseHTML):
|
|
|
958
957
|
on_mouse_over: EventType[()] | None = None,
|
|
959
958
|
on_mouse_up: EventType[()] | None = None,
|
|
960
959
|
on_scroll: EventType[()] | None = None,
|
|
960
|
+
on_scroll_end: EventType[()] | None = None,
|
|
961
961
|
on_unmount: EventType[()] | None = None,
|
|
962
962
|
**props,
|
|
963
963
|
) -> Dl:
|
|
@@ -995,9 +995,8 @@ class Dl(BaseHTML):
|
|
|
995
995
|
"""
|
|
996
996
|
|
|
997
997
|
class Dt(BaseHTML):
|
|
998
|
-
@overload
|
|
999
998
|
@classmethod
|
|
1000
|
-
def create(
|
|
999
|
+
def create(
|
|
1001
1000
|
cls,
|
|
1002
1001
|
*children,
|
|
1003
1002
|
access_key: Var[str] | str | None = None,
|
|
@@ -1190,9 +1189,9 @@ class Dt(BaseHTML):
|
|
|
1190
1189
|
autofocus: bool | None = None,
|
|
1191
1190
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
1192
1191
|
on_blur: EventType[()] | None = None,
|
|
1193
|
-
on_click: EventType[()] | None = None,
|
|
1194
|
-
on_context_menu: EventType[()] | None = None,
|
|
1195
|
-
on_double_click: EventType[()] | None = None,
|
|
1192
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
1193
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
1194
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
1196
1195
|
on_focus: EventType[()] | None = None,
|
|
1197
1196
|
on_mount: EventType[()] | None = None,
|
|
1198
1197
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -1203,6 +1202,7 @@ class Dt(BaseHTML):
|
|
|
1203
1202
|
on_mouse_over: EventType[()] | None = None,
|
|
1204
1203
|
on_mouse_up: EventType[()] | None = None,
|
|
1205
1204
|
on_scroll: EventType[()] | None = None,
|
|
1205
|
+
on_scroll_end: EventType[()] | None = None,
|
|
1206
1206
|
on_unmount: EventType[()] | None = None,
|
|
1207
1207
|
**props,
|
|
1208
1208
|
) -> Dt:
|
|
@@ -1240,9 +1240,8 @@ class Dt(BaseHTML):
|
|
|
1240
1240
|
"""
|
|
1241
1241
|
|
|
1242
1242
|
class Figcaption(BaseHTML):
|
|
1243
|
-
@overload
|
|
1244
1243
|
@classmethod
|
|
1245
|
-
def create(
|
|
1244
|
+
def create(
|
|
1246
1245
|
cls,
|
|
1247
1246
|
*children,
|
|
1248
1247
|
access_key: Var[str] | str | None = None,
|
|
@@ -1435,9 +1434,9 @@ class Figcaption(BaseHTML):
|
|
|
1435
1434
|
autofocus: bool | None = None,
|
|
1436
1435
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
1437
1436
|
on_blur: EventType[()] | None = None,
|
|
1438
|
-
on_click: EventType[()] | None = None,
|
|
1439
|
-
on_context_menu: EventType[()] | None = None,
|
|
1440
|
-
on_double_click: EventType[()] | None = None,
|
|
1437
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
1438
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
1439
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
1441
1440
|
on_focus: EventType[()] | None = None,
|
|
1442
1441
|
on_mount: EventType[()] | None = None,
|
|
1443
1442
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -1448,6 +1447,7 @@ class Figcaption(BaseHTML):
|
|
|
1448
1447
|
on_mouse_over: EventType[()] | None = None,
|
|
1449
1448
|
on_mouse_up: EventType[()] | None = None,
|
|
1450
1449
|
on_scroll: EventType[()] | None = None,
|
|
1450
|
+
on_scroll_end: EventType[()] | None = None,
|
|
1451
1451
|
on_unmount: EventType[()] | None = None,
|
|
1452
1452
|
**props,
|
|
1453
1453
|
) -> Figcaption:
|
|
@@ -1485,9 +1485,8 @@ class Figcaption(BaseHTML):
|
|
|
1485
1485
|
"""
|
|
1486
1486
|
|
|
1487
1487
|
class Hr(BaseHTML):
|
|
1488
|
-
@overload
|
|
1489
1488
|
@classmethod
|
|
1490
|
-
def create(
|
|
1489
|
+
def create(
|
|
1491
1490
|
cls,
|
|
1492
1491
|
*children,
|
|
1493
1492
|
access_key: Var[str] | str | None = None,
|
|
@@ -1680,9 +1679,9 @@ class Hr(BaseHTML):
|
|
|
1680
1679
|
autofocus: bool | None = None,
|
|
1681
1680
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
1682
1681
|
on_blur: EventType[()] | None = None,
|
|
1683
|
-
on_click: EventType[()] | None = None,
|
|
1684
|
-
on_context_menu: EventType[()] | None = None,
|
|
1685
|
-
on_double_click: EventType[()] | None = None,
|
|
1682
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
1683
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
1684
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
1686
1685
|
on_focus: EventType[()] | None = None,
|
|
1687
1686
|
on_mount: EventType[()] | None = None,
|
|
1688
1687
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -1693,6 +1692,7 @@ class Hr(BaseHTML):
|
|
|
1693
1692
|
on_mouse_over: EventType[()] | None = None,
|
|
1694
1693
|
on_mouse_up: EventType[()] | None = None,
|
|
1695
1694
|
on_scroll: EventType[()] | None = None,
|
|
1695
|
+
on_scroll_end: EventType[()] | None = None,
|
|
1696
1696
|
on_unmount: EventType[()] | None = None,
|
|
1697
1697
|
**props,
|
|
1698
1698
|
) -> Hr:
|
|
@@ -1730,9 +1730,8 @@ class Hr(BaseHTML):
|
|
|
1730
1730
|
"""
|
|
1731
1731
|
|
|
1732
1732
|
class Li(BaseHTML):
|
|
1733
|
-
@overload
|
|
1734
1733
|
@classmethod
|
|
1735
|
-
def create(
|
|
1734
|
+
def create(
|
|
1736
1735
|
cls,
|
|
1737
1736
|
*children,
|
|
1738
1737
|
access_key: Var[str] | str | None = None,
|
|
@@ -1925,9 +1924,9 @@ class Li(BaseHTML):
|
|
|
1925
1924
|
autofocus: bool | None = None,
|
|
1926
1925
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
1927
1926
|
on_blur: EventType[()] | None = None,
|
|
1928
|
-
on_click: EventType[()] | None = None,
|
|
1929
|
-
on_context_menu: EventType[()] | None = None,
|
|
1930
|
-
on_double_click: EventType[()] | None = None,
|
|
1927
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
1928
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
1929
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
1931
1930
|
on_focus: EventType[()] | None = None,
|
|
1932
1931
|
on_mount: EventType[()] | None = None,
|
|
1933
1932
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -1938,6 +1937,7 @@ class Li(BaseHTML):
|
|
|
1938
1937
|
on_mouse_over: EventType[()] | None = None,
|
|
1939
1938
|
on_mouse_up: EventType[()] | None = None,
|
|
1940
1939
|
on_scroll: EventType[()] | None = None,
|
|
1940
|
+
on_scroll_end: EventType[()] | None = None,
|
|
1941
1941
|
on_unmount: EventType[()] | None = None,
|
|
1942
1942
|
**props,
|
|
1943
1943
|
) -> Li:
|
|
@@ -1975,9 +1975,8 @@ class Li(BaseHTML):
|
|
|
1975
1975
|
"""
|
|
1976
1976
|
|
|
1977
1977
|
class Menu(BaseHTML):
|
|
1978
|
-
@overload
|
|
1979
1978
|
@classmethod
|
|
1980
|
-
def create(
|
|
1979
|
+
def create(
|
|
1981
1980
|
cls,
|
|
1982
1981
|
*children,
|
|
1983
1982
|
type: Var[str] | str | None = None,
|
|
@@ -2171,9 +2170,9 @@ class Menu(BaseHTML):
|
|
|
2171
2170
|
autofocus: bool | None = None,
|
|
2172
2171
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
2173
2172
|
on_blur: EventType[()] | None = None,
|
|
2174
|
-
on_click: EventType[()] | None = None,
|
|
2175
|
-
on_context_menu: EventType[()] | None = None,
|
|
2176
|
-
on_double_click: EventType[()] | None = None,
|
|
2173
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
2174
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
2175
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
2177
2176
|
on_focus: EventType[()] | None = None,
|
|
2178
2177
|
on_mount: EventType[()] | None = None,
|
|
2179
2178
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -2184,6 +2183,7 @@ class Menu(BaseHTML):
|
|
|
2184
2183
|
on_mouse_over: EventType[()] | None = None,
|
|
2185
2184
|
on_mouse_up: EventType[()] | None = None,
|
|
2186
2185
|
on_scroll: EventType[()] | None = None,
|
|
2186
|
+
on_scroll_end: EventType[()] | None = None,
|
|
2187
2187
|
on_unmount: EventType[()] | None = None,
|
|
2188
2188
|
**props,
|
|
2189
2189
|
) -> Menu:
|
|
@@ -2222,9 +2222,8 @@ class Menu(BaseHTML):
|
|
|
2222
2222
|
"""
|
|
2223
2223
|
|
|
2224
2224
|
class Ol(BaseHTML):
|
|
2225
|
-
@overload
|
|
2226
2225
|
@classmethod
|
|
2227
|
-
def create(
|
|
2226
|
+
def create(
|
|
2228
2227
|
cls,
|
|
2229
2228
|
*children,
|
|
2230
2229
|
reversed: Var[bool] | bool | None = None,
|
|
@@ -2422,9 +2421,9 @@ class Ol(BaseHTML):
|
|
|
2422
2421
|
autofocus: bool | None = None,
|
|
2423
2422
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
2424
2423
|
on_blur: EventType[()] | None = None,
|
|
2425
|
-
on_click: EventType[()] | None = None,
|
|
2426
|
-
on_context_menu: EventType[()] | None = None,
|
|
2427
|
-
on_double_click: EventType[()] | None = None,
|
|
2424
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
2425
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
2426
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
2428
2427
|
on_focus: EventType[()] | None = None,
|
|
2429
2428
|
on_mount: EventType[()] | None = None,
|
|
2430
2429
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -2435,6 +2434,7 @@ class Ol(BaseHTML):
|
|
|
2435
2434
|
on_mouse_over: EventType[()] | None = None,
|
|
2436
2435
|
on_mouse_up: EventType[()] | None = None,
|
|
2437
2436
|
on_scroll: EventType[()] | None = None,
|
|
2437
|
+
on_scroll_end: EventType[()] | None = None,
|
|
2438
2438
|
on_unmount: EventType[()] | None = None,
|
|
2439
2439
|
**props,
|
|
2440
2440
|
) -> Ol:
|
|
@@ -2475,9 +2475,8 @@ class Ol(BaseHTML):
|
|
|
2475
2475
|
"""
|
|
2476
2476
|
|
|
2477
2477
|
class P(BaseHTML):
|
|
2478
|
-
@overload
|
|
2479
2478
|
@classmethod
|
|
2480
|
-
def create(
|
|
2479
|
+
def create(
|
|
2481
2480
|
cls,
|
|
2482
2481
|
*children,
|
|
2483
2482
|
access_key: Var[str] | str | None = None,
|
|
@@ -2670,9 +2669,9 @@ class P(BaseHTML):
|
|
|
2670
2669
|
autofocus: bool | None = None,
|
|
2671
2670
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
2672
2671
|
on_blur: EventType[()] | None = None,
|
|
2673
|
-
on_click: EventType[()] | None = None,
|
|
2674
|
-
on_context_menu: EventType[()] | None = None,
|
|
2675
|
-
on_double_click: EventType[()] | None = None,
|
|
2672
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
2673
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
2674
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
2676
2675
|
on_focus: EventType[()] | None = None,
|
|
2677
2676
|
on_mount: EventType[()] | None = None,
|
|
2678
2677
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -2683,6 +2682,7 @@ class P(BaseHTML):
|
|
|
2683
2682
|
on_mouse_over: EventType[()] | None = None,
|
|
2684
2683
|
on_mouse_up: EventType[()] | None = None,
|
|
2685
2684
|
on_scroll: EventType[()] | None = None,
|
|
2685
|
+
on_scroll_end: EventType[()] | None = None,
|
|
2686
2686
|
on_unmount: EventType[()] | None = None,
|
|
2687
2687
|
**props,
|
|
2688
2688
|
) -> P:
|
|
@@ -2720,9 +2720,8 @@ class P(BaseHTML):
|
|
|
2720
2720
|
"""
|
|
2721
2721
|
|
|
2722
2722
|
class Pre(BaseHTML):
|
|
2723
|
-
@overload
|
|
2724
2723
|
@classmethod
|
|
2725
|
-
def create(
|
|
2724
|
+
def create(
|
|
2726
2725
|
cls,
|
|
2727
2726
|
*children,
|
|
2728
2727
|
access_key: Var[str] | str | None = None,
|
|
@@ -2915,9 +2914,9 @@ class Pre(BaseHTML):
|
|
|
2915
2914
|
autofocus: bool | None = None,
|
|
2916
2915
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
2917
2916
|
on_blur: EventType[()] | None = None,
|
|
2918
|
-
on_click: EventType[()] | None = None,
|
|
2919
|
-
on_context_menu: EventType[()] | None = None,
|
|
2920
|
-
on_double_click: EventType[()] | None = None,
|
|
2917
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
2918
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
2919
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
2921
2920
|
on_focus: EventType[()] | None = None,
|
|
2922
2921
|
on_mount: EventType[()] | None = None,
|
|
2923
2922
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -2928,6 +2927,7 @@ class Pre(BaseHTML):
|
|
|
2928
2927
|
on_mouse_over: EventType[()] | None = None,
|
|
2929
2928
|
on_mouse_up: EventType[()] | None = None,
|
|
2930
2929
|
on_scroll: EventType[()] | None = None,
|
|
2930
|
+
on_scroll_end: EventType[()] | None = None,
|
|
2931
2931
|
on_unmount: EventType[()] | None = None,
|
|
2932
2932
|
**props,
|
|
2933
2933
|
) -> Pre:
|
|
@@ -2965,9 +2965,8 @@ class Pre(BaseHTML):
|
|
|
2965
2965
|
"""
|
|
2966
2966
|
|
|
2967
2967
|
class Ul(BaseHTML):
|
|
2968
|
-
@overload
|
|
2969
2968
|
@classmethod
|
|
2970
|
-
def create(
|
|
2969
|
+
def create(
|
|
2971
2970
|
cls,
|
|
2972
2971
|
*children,
|
|
2973
2972
|
access_key: Var[str] | str | None = None,
|
|
@@ -3160,9 +3159,9 @@ class Ul(BaseHTML):
|
|
|
3160
3159
|
autofocus: bool | None = None,
|
|
3161
3160
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
3162
3161
|
on_blur: EventType[()] | None = None,
|
|
3163
|
-
on_click: EventType[()] | None = None,
|
|
3164
|
-
on_context_menu: EventType[()] | None = None,
|
|
3165
|
-
on_double_click: EventType[()] | None = None,
|
|
3162
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
3163
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
3164
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
3166
3165
|
on_focus: EventType[()] | None = None,
|
|
3167
3166
|
on_mount: EventType[()] | None = None,
|
|
3168
3167
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -3173,6 +3172,7 @@ class Ul(BaseHTML):
|
|
|
3173
3172
|
on_mouse_over: EventType[()] | None = None,
|
|
3174
3173
|
on_mouse_up: EventType[()] | None = None,
|
|
3175
3174
|
on_scroll: EventType[()] | None = None,
|
|
3175
|
+
on_scroll_end: EventType[()] | None = None,
|
|
3176
3176
|
on_unmount: EventType[()] | None = None,
|
|
3177
3177
|
**props,
|
|
3178
3178
|
) -> Ul:
|
|
@@ -3210,9 +3210,8 @@ class Ul(BaseHTML):
|
|
|
3210
3210
|
"""
|
|
3211
3211
|
|
|
3212
3212
|
class Ins(BaseHTML):
|
|
3213
|
-
@overload
|
|
3214
3213
|
@classmethod
|
|
3215
|
-
def create(
|
|
3214
|
+
def create(
|
|
3216
3215
|
cls,
|
|
3217
3216
|
*children,
|
|
3218
3217
|
cite: Var[str] | str | None = None,
|
|
@@ -3407,9 +3406,9 @@ class Ins(BaseHTML):
|
|
|
3407
3406
|
autofocus: bool | None = None,
|
|
3408
3407
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
3409
3408
|
on_blur: EventType[()] | None = None,
|
|
3410
|
-
on_click: EventType[()] | None = None,
|
|
3411
|
-
on_context_menu: EventType[()] | None = None,
|
|
3412
|
-
on_double_click: EventType[()] | None = None,
|
|
3409
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
3410
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
3411
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
3413
3412
|
on_focus: EventType[()] | None = None,
|
|
3414
3413
|
on_mount: EventType[()] | None = None,
|
|
3415
3414
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -3420,6 +3419,7 @@ class Ins(BaseHTML):
|
|
|
3420
3419
|
on_mouse_over: EventType[()] | None = None,
|
|
3421
3420
|
on_mouse_up: EventType[()] | None = None,
|
|
3422
3421
|
on_scroll: EventType[()] | None = None,
|
|
3422
|
+
on_scroll_end: EventType[()] | None = None,
|
|
3423
3423
|
on_unmount: EventType[()] | None = None,
|
|
3424
3424
|
**props,
|
|
3425
3425
|
) -> Ins:
|
|
@@ -3459,9 +3459,8 @@ class Ins(BaseHTML):
|
|
|
3459
3459
|
"""
|
|
3460
3460
|
|
|
3461
3461
|
class Del(BaseHTML):
|
|
3462
|
-
@overload
|
|
3463
3462
|
@classmethod
|
|
3464
|
-
def create(
|
|
3463
|
+
def create(
|
|
3465
3464
|
cls,
|
|
3466
3465
|
*children,
|
|
3467
3466
|
cite: Var[str] | str | None = None,
|
|
@@ -3656,9 +3655,9 @@ class Del(BaseHTML):
|
|
|
3656
3655
|
autofocus: bool | None = None,
|
|
3657
3656
|
custom_attrs: dict[str, Var | Any] | None = None,
|
|
3658
3657
|
on_blur: EventType[()] | None = None,
|
|
3659
|
-
on_click: EventType[()] | None = None,
|
|
3660
|
-
on_context_menu: EventType[()] | None = None,
|
|
3661
|
-
on_double_click: EventType[()] | None = None,
|
|
3658
|
+
on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
3659
|
+
on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
3660
|
+
on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
|
|
3662
3661
|
on_focus: EventType[()] | None = None,
|
|
3663
3662
|
on_mount: EventType[()] | None = None,
|
|
3664
3663
|
on_mouse_down: EventType[()] | None = None,
|
|
@@ -3669,6 +3668,7 @@ class Del(BaseHTML):
|
|
|
3669
3668
|
on_mouse_over: EventType[()] | None = None,
|
|
3670
3669
|
on_mouse_up: EventType[()] | None = None,
|
|
3671
3670
|
on_scroll: EventType[()] | None = None,
|
|
3671
|
+
on_scroll_end: EventType[()] | None = None,
|
|
3672
3672
|
on_unmount: EventType[()] | None = None,
|
|
3673
3673
|
**props,
|
|
3674
3674
|
) -> Del:
|
|
@@ -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"
|