reflex 0.5.10a3__py3-none-any.whl → 0.6.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/web/pages/utils.js.jinja2 +4 -4
- reflex/.templates/jinja/web/utils/context.js.jinja2 +1 -1
- reflex/.templates/jinja/web/utils/theme.js.jinja2 +1 -1
- reflex/__init__.py +3 -2
- reflex/__init__.pyi +2 -2
- reflex/app.py +43 -9
- reflex/base.py +3 -2
- reflex/compiler/compiler.py +6 -6
- reflex/compiler/utils.py +5 -3
- reflex/components/base/app_wrap.py +2 -4
- reflex/components/base/app_wrap.pyi +17 -17
- reflex/components/base/bare.py +7 -4
- reflex/components/base/body.pyi +17 -17
- reflex/components/base/document.pyi +81 -81
- reflex/components/base/error_boundary.py +10 -8
- reflex/components/base/error_boundary.pyi +20 -19
- reflex/components/base/fragment.pyi +17 -17
- reflex/components/base/head.pyi +33 -33
- reflex/components/base/link.pyi +34 -33
- reflex/components/base/meta.pyi +65 -65
- reflex/components/base/script.py +2 -1
- reflex/components/base/script.pyi +21 -20
- reflex/components/component.py +116 -145
- reflex/components/core/banner.py +59 -60
- reflex/components/core/banner.pyi +86 -150
- reflex/components/core/client_side_routing.py +2 -1
- reflex/components/core/client_side_routing.pyi +34 -33
- reflex/components/core/clipboard.py +2 -2
- reflex/components/core/clipboard.pyi +19 -18
- reflex/components/core/cond.py +21 -44
- reflex/components/core/debounce.py +6 -8
- reflex/components/core/debounce.pyi +19 -18
- reflex/components/core/foreach.py +5 -14
- reflex/components/core/html.pyi +18 -17
- reflex/components/core/match.py +36 -43
- reflex/components/core/upload.py +32 -25
- reflex/components/core/upload.pyi +84 -73
- reflex/components/datadisplay/code.py +55 -28
- reflex/components/datadisplay/code.pyi +20 -17
- reflex/components/datadisplay/dataeditor.py +17 -11
- reflex/components/datadisplay/dataeditor.pyi +34 -33
- reflex/components/el/__init__.py +0 -1
- reflex/components/el/__init__.pyi +0 -11
- reflex/components/el/element.pyi +17 -17
- reflex/components/el/elements/__init__.py +1 -7
- reflex/components/el/elements/__init__.pyi +1 -15
- reflex/components/el/elements/base.pyi +18 -17
- reflex/components/el/elements/forms.py +24 -31
- reflex/components/el/elements/forms.pyi +237 -236
- reflex/components/el/elements/inline.pyi +450 -449
- reflex/components/el/elements/media.py +0 -21
- reflex/components/el/elements/media.pyi +338 -337
- reflex/components/el/elements/metadata.py +3 -2
- reflex/components/el/elements/metadata.pyi +98 -97
- reflex/components/el/elements/other.pyi +114 -113
- reflex/components/el/elements/scripts.pyi +50 -49
- reflex/components/el/elements/sectioning.pyi +242 -241
- reflex/components/el/elements/tables.pyi +162 -161
- reflex/components/el/elements/typography.pyi +242 -241
- reflex/components/gridjs/datatable.py +13 -14
- reflex/components/gridjs/datatable.pyi +34 -33
- reflex/components/lucide/icon.py +2 -126
- reflex/components/lucide/icon.pyi +34 -142
- reflex/components/markdown/markdown.py +30 -35
- reflex/components/markdown/markdown.pyi +29 -32
- reflex/components/moment/moment.pyi +19 -18
- reflex/components/next/base.pyi +17 -17
- reflex/components/next/image.py +0 -4
- reflex/components/next/image.pyi +20 -19
- reflex/components/next/link.pyi +18 -17
- reflex/components/next/video.pyi +18 -17
- reflex/components/plotly/plotly.py +16 -28
- reflex/components/plotly/plotly.pyi +36 -35
- reflex/components/props.py +21 -10
- reflex/components/radix/__init__.pyi +1 -1
- reflex/components/radix/primitives/__init__.pyi +0 -1
- reflex/components/radix/primitives/accordion.py +7 -8
- reflex/components/radix/primitives/accordion.pyi +117 -116
- reflex/components/radix/primitives/base.pyi +34 -33
- reflex/components/radix/primitives/drawer.pyi +169 -168
- reflex/components/radix/primitives/form.pyi +168 -167
- reflex/components/radix/primitives/progress.pyi +82 -81
- reflex/components/radix/primitives/slider.pyi +84 -83
- reflex/components/radix/themes/base.py +8 -4
- reflex/components/radix/themes/base.pyi +114 -113
- reflex/components/radix/themes/color_mode.py +12 -21
- reflex/components/radix/themes/color_mode.pyi +67 -67
- reflex/components/radix/themes/components/__init__.pyi +1 -0
- reflex/components/radix/themes/components/alert_dialog.pyi +118 -117
- reflex/components/radix/themes/components/aspect_ratio.pyi +18 -17
- reflex/components/radix/themes/components/avatar.pyi +18 -17
- reflex/components/radix/themes/components/badge.pyi +18 -17
- reflex/components/radix/themes/components/button.pyi +18 -17
- reflex/components/radix/themes/components/callout.pyi +82 -81
- reflex/components/radix/themes/components/card.pyi +18 -17
- reflex/components/radix/themes/components/checkbox.py +2 -3
- reflex/components/radix/themes/components/checkbox.pyi +53 -52
- reflex/components/radix/themes/components/checkbox_cards.pyi +34 -33
- reflex/components/radix/themes/components/checkbox_group.pyi +34 -33
- reflex/components/radix/themes/components/context_menu.pyi +140 -139
- reflex/components/radix/themes/components/data_list.py +5 -0
- reflex/components/radix/themes/components/data_list.pyi +71 -65
- reflex/components/radix/themes/components/dialog.pyi +121 -120
- reflex/components/radix/themes/components/dropdown_menu.pyi +142 -141
- reflex/components/radix/themes/components/hover_card.pyi +68 -67
- reflex/components/radix/themes/components/icon_button.py +2 -1
- reflex/components/radix/themes/components/icon_button.pyi +18 -17
- reflex/components/radix/themes/components/inset.pyi +18 -17
- reflex/components/radix/themes/components/popover.pyi +73 -72
- reflex/components/radix/themes/components/progress.pyi +18 -17
- reflex/components/radix/themes/components/radio.pyi +18 -17
- reflex/components/radix/themes/components/radio_cards.pyi +35 -34
- reflex/components/radix/themes/components/radio_group.py +35 -31
- reflex/components/radix/themes/components/radio_group.pyi +73 -66
- reflex/components/radix/themes/components/scroll_area.pyi +18 -17
- reflex/components/radix/themes/components/segmented_control.pyi +35 -34
- reflex/components/radix/themes/components/select.py +2 -1
- reflex/components/radix/themes/components/select.pyi +155 -154
- reflex/components/radix/themes/components/separator.py +2 -3
- reflex/components/radix/themes/components/separator.pyi +18 -17
- reflex/components/radix/themes/components/skeleton.pyi +18 -17
- reflex/components/radix/themes/components/slider.py +2 -1
- reflex/components/radix/themes/components/slider.pyi +20 -19
- reflex/components/radix/themes/components/spinner.pyi +18 -17
- reflex/components/radix/themes/components/switch.pyi +19 -18
- reflex/components/radix/themes/components/table.pyi +114 -113
- reflex/components/radix/themes/components/tabs.pyi +84 -83
- reflex/components/radix/themes/components/text_area.pyi +21 -20
- reflex/components/radix/themes/components/text_field.py +0 -79
- reflex/components/radix/themes/components/text_field.pyi +57 -63
- reflex/components/radix/themes/components/tooltip.pyi +21 -20
- reflex/components/radix/themes/layout/base.pyi +18 -17
- reflex/components/radix/themes/layout/box.pyi +18 -17
- reflex/components/radix/themes/layout/center.pyi +18 -17
- reflex/components/radix/themes/layout/container.py +2 -3
- reflex/components/radix/themes/layout/container.pyi +18 -17
- reflex/components/radix/themes/layout/flex.pyi +18 -17
- reflex/components/radix/themes/layout/grid.pyi +18 -17
- reflex/components/radix/themes/layout/list.py +5 -4
- reflex/components/radix/themes/layout/list.pyi +86 -85
- reflex/components/radix/themes/layout/section.py +2 -3
- reflex/components/radix/themes/layout/section.pyi +18 -17
- reflex/components/radix/themes/layout/spacer.pyi +18 -17
- reflex/components/radix/themes/layout/stack.pyi +50 -49
- reflex/components/radix/themes/typography/blockquote.pyi +18 -17
- reflex/components/radix/themes/typography/code.pyi +18 -17
- reflex/components/radix/themes/typography/heading.pyi +18 -17
- reflex/components/radix/themes/typography/link.pyi +18 -17
- reflex/components/radix/themes/typography/text.pyi +114 -113
- reflex/components/react_player/audio.pyi +34 -33
- reflex/components/react_player/react_player.pyi +34 -33
- reflex/components/react_player/video.pyi +34 -33
- reflex/components/recharts/cartesian.py +23 -19
- reflex/components/recharts/cartesian.pyi +297 -296
- reflex/components/recharts/charts.py +6 -5
- reflex/components/recharts/charts.pyi +179 -178
- reflex/components/recharts/general.py +8 -7
- reflex/components/recharts/general.pyi +82 -81
- reflex/components/recharts/polar.py +14 -13
- reflex/components/recharts/polar.pyi +76 -75
- reflex/components/recharts/recharts.pyi +33 -33
- reflex/components/sonner/toast.py +30 -33
- reflex/components/sonner/toast.pyi +27 -25
- reflex/components/suneditor/editor.py +2 -1
- reflex/components/suneditor/editor.pyi +27 -26
- reflex/components/tags/iter_tag.py +16 -16
- reflex/components/tags/tag.py +8 -10
- reflex/constants/base.py +3 -1
- reflex/constants/event.py +1 -0
- reflex/event.py +89 -79
- reflex/experimental/__init__.py +25 -6
- reflex/experimental/client_state.py +34 -58
- reflex/experimental/hooks.py +13 -18
- reflex/experimental/layout.py +5 -5
- reflex/experimental/layout.pyi +84 -83
- reflex/{experimental/vars → ivars}/__init__.py +0 -1
- reflex/ivars/base.py +2180 -0
- reflex/ivars/function.py +200 -0
- reflex/ivars/number.py +1137 -0
- reflex/ivars/object.py +564 -0
- reflex/ivars/sequence.py +1601 -0
- reflex/model.py +22 -0
- reflex/reflex.py +4 -0
- reflex/state.py +388 -73
- reflex/style.py +52 -34
- reflex/testing.py +8 -3
- reflex/utils/exceptions.py +12 -0
- reflex/utils/exec.py +0 -14
- reflex/utils/format.py +74 -223
- reflex/utils/net.py +43 -0
- reflex/utils/path_ops.py +13 -1
- reflex/utils/prerequisites.py +46 -26
- reflex/utils/pyi_generator.py +5 -4
- reflex/utils/serializers.py +13 -31
- reflex/utils/types.py +44 -9
- reflex/vars.py +127 -2230
- {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/METADATA +4 -6
- reflex-0.6.0a1.dist-info/RECORD +384 -0
- reflex/.templates/apps/demo/.gitignore +0 -4
- reflex/.templates/apps/demo/assets/favicon.ico +0 -0
- reflex/.templates/apps/demo/assets/github.svg +0 -10
- reflex/.templates/apps/demo/assets/icon.svg +0 -37
- reflex/.templates/apps/demo/assets/logo.svg +0 -68
- reflex/.templates/apps/demo/assets/paneleft.svg +0 -13
- reflex/.templates/apps/demo/code/__init__.py +0 -1
- reflex/.templates/apps/demo/code/demo.py +0 -127
- reflex/.templates/apps/demo/code/pages/__init__.py +0 -7
- reflex/.templates/apps/demo/code/pages/chatapp.py +0 -31
- reflex/.templates/apps/demo/code/pages/datatable.py +0 -360
- reflex/.templates/apps/demo/code/pages/forms.py +0 -257
- reflex/.templates/apps/demo/code/pages/graphing.py +0 -253
- reflex/.templates/apps/demo/code/pages/home.py +0 -56
- reflex/.templates/apps/demo/code/sidebar.py +0 -178
- reflex/.templates/apps/demo/code/state.py +0 -22
- reflex/.templates/apps/demo/code/states/form_state.py +0 -40
- reflex/.templates/apps/demo/code/states/pie_state.py +0 -47
- reflex/.templates/apps/demo/code/styles.py +0 -68
- reflex/.templates/apps/demo/code/webui/__init__.py +0 -0
- reflex/.templates/apps/demo/code/webui/components/__init__.py +0 -4
- reflex/.templates/apps/demo/code/webui/components/chat.py +0 -118
- reflex/.templates/apps/demo/code/webui/components/loading_icon.py +0 -19
- reflex/.templates/apps/demo/code/webui/components/modal.py +0 -56
- reflex/.templates/apps/demo/code/webui/components/navbar.py +0 -70
- reflex/.templates/apps/demo/code/webui/components/sidebar.py +0 -66
- reflex/.templates/apps/demo/code/webui/state.py +0 -146
- reflex/.templates/apps/demo/code/webui/styles.py +0 -88
- reflex/experimental/vars/base.py +0 -583
- reflex/experimental/vars/function.py +0 -290
- reflex/experimental/vars/number.py +0 -1458
- reflex/experimental/vars/object.py +0 -804
- reflex/experimental/vars/sequence.py +0 -1764
- reflex/utils/watch.py +0 -96
- reflex/vars.pyi +0 -218
- reflex-0.5.10a3.dist-info/RECORD +0 -413
- {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/LICENSE +0 -0
- {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/WHEEL +0 -0
- {reflex-0.5.10a3.dist-info → reflex-0.6.0a1.dist-info}/entry_points.txt +0 -0
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
import re
|
|
6
5
|
from typing import Dict, Literal, Optional, Union
|
|
7
6
|
|
|
7
|
+
from typing_extensions import get_args
|
|
8
|
+
|
|
8
9
|
from reflex.components.component import Component
|
|
9
10
|
from reflex.components.core.cond import color_mode_cond
|
|
10
11
|
from reflex.components.lucide.icon import Icon
|
|
@@ -12,6 +13,7 @@ from reflex.components.radix.themes.components.button import Button
|
|
|
12
13
|
from reflex.components.radix.themes.layout.box import Box
|
|
13
14
|
from reflex.constants.colors import Color
|
|
14
15
|
from reflex.event import set_clipboard
|
|
16
|
+
from reflex.ivars.base import ImmutableVar, LiteralVar
|
|
15
17
|
from reflex.style import Style
|
|
16
18
|
from reflex.utils import format
|
|
17
19
|
from reflex.utils.imports import ImportDict, ImportVar
|
|
@@ -349,6 +351,20 @@ LiteralCodeLanguage = Literal[
|
|
|
349
351
|
]
|
|
350
352
|
|
|
351
353
|
|
|
354
|
+
def replace_quotes_with_camel_case(value: str) -> str:
|
|
355
|
+
"""Replaces quotes in the given string with camel case format.
|
|
356
|
+
|
|
357
|
+
Args:
|
|
358
|
+
value (str): The string to be processed.
|
|
359
|
+
|
|
360
|
+
Returns:
|
|
361
|
+
str: The processed string with quotes replaced by camel case.
|
|
362
|
+
"""
|
|
363
|
+
for theme in get_args(LiteralCodeBlockTheme):
|
|
364
|
+
value = value.replace(f'"{theme}"', format.to_camel_case(theme))
|
|
365
|
+
return value
|
|
366
|
+
|
|
367
|
+
|
|
352
368
|
class CodeBlock(Component):
|
|
353
369
|
"""A code block."""
|
|
354
370
|
|
|
@@ -389,32 +405,42 @@ class CodeBlock(Component):
|
|
|
389
405
|
The import dict.
|
|
390
406
|
"""
|
|
391
407
|
imports_: ImportDict = {}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
408
|
+
|
|
409
|
+
themeString = str(self.theme)
|
|
410
|
+
|
|
411
|
+
selected_themes = []
|
|
412
|
+
|
|
413
|
+
for possibleTheme in get_args(LiteralCodeBlockTheme):
|
|
414
|
+
if format.to_camel_case(possibleTheme) in themeString:
|
|
415
|
+
selected_themes.append(possibleTheme)
|
|
416
|
+
if possibleTheme in themeString:
|
|
417
|
+
selected_themes.append(possibleTheme)
|
|
418
|
+
|
|
419
|
+
selected_themes = sorted(set(map(self.convert_theme_name, selected_themes)))
|
|
395
420
|
|
|
396
421
|
imports_.update(
|
|
397
422
|
{
|
|
398
|
-
f"react-syntax-highlighter/dist/cjs/styles/prism/{
|
|
423
|
+
f"react-syntax-highlighter/dist/cjs/styles/prism/{theme}": [
|
|
399
424
|
ImportVar(
|
|
400
|
-
tag=format.to_camel_case(
|
|
425
|
+
tag=format.to_camel_case(theme),
|
|
401
426
|
is_default=True,
|
|
402
427
|
install=False,
|
|
403
428
|
)
|
|
404
429
|
]
|
|
405
|
-
for theme in
|
|
430
|
+
for theme in selected_themes
|
|
406
431
|
}
|
|
407
432
|
)
|
|
408
433
|
|
|
409
434
|
if (
|
|
410
435
|
self.language is not None
|
|
411
|
-
and self.language.
|
|
436
|
+
and (language_without_quotes := str(self.language).replace('"', ""))
|
|
437
|
+
in LiteralCodeLanguage.__args__ # type: ignore
|
|
412
438
|
):
|
|
413
439
|
imports_[
|
|
414
|
-
f"react-syntax-highlighter/dist/cjs/languages/prism/{
|
|
440
|
+
f"react-syntax-highlighter/dist/cjs/languages/prism/{language_without_quotes}"
|
|
415
441
|
] = [
|
|
416
442
|
ImportVar(
|
|
417
|
-
tag=format.to_camel_case(
|
|
443
|
+
tag=format.to_camel_case(language_without_quotes),
|
|
418
444
|
is_default=True,
|
|
419
445
|
install=False,
|
|
420
446
|
)
|
|
@@ -425,9 +451,10 @@ class CodeBlock(Component):
|
|
|
425
451
|
def _get_custom_code(self) -> Optional[str]:
|
|
426
452
|
if (
|
|
427
453
|
self.language is not None
|
|
428
|
-
and self.language.
|
|
454
|
+
and (language_without_quotes := str(self.language).replace('"', ""))
|
|
455
|
+
in LiteralCodeLanguage.__args__ # type: ignore
|
|
429
456
|
):
|
|
430
|
-
return f"{self.alias}.registerLanguage('{
|
|
457
|
+
return f"{self.alias}.registerLanguage('{language_without_quotes}', {format.to_camel_case(language_without_quotes)})"
|
|
431
458
|
|
|
432
459
|
@classmethod
|
|
433
460
|
def create(
|
|
@@ -453,11 +480,14 @@ class CodeBlock(Component):
|
|
|
453
480
|
|
|
454
481
|
if "theme" not in props:
|
|
455
482
|
# Default color scheme responds to global color mode.
|
|
456
|
-
props["theme"] = color_mode_cond(
|
|
483
|
+
props["theme"] = color_mode_cond(
|
|
484
|
+
light=ImmutableVar.create_safe("oneLight"),
|
|
485
|
+
dark=ImmutableVar.create_safe("oneDark"),
|
|
486
|
+
)
|
|
457
487
|
|
|
458
488
|
# react-syntax-highlighter doesnt have an explicit "light" or "dark" theme so we use one-light and one-dark
|
|
459
489
|
# themes respectively to ensure code compatibility.
|
|
460
|
-
if "theme" in props and not isinstance(props["theme"],
|
|
490
|
+
if "theme" in props and not isinstance(props["theme"], ImmutableVar):
|
|
461
491
|
props["theme"] = cls.convert_theme_name(props["theme"])
|
|
462
492
|
|
|
463
493
|
if can_copy:
|
|
@@ -483,8 +513,8 @@ class CodeBlock(Component):
|
|
|
483
513
|
# Carry the children (code) via props
|
|
484
514
|
if children:
|
|
485
515
|
props["code"] = children[0]
|
|
486
|
-
if not isinstance(props["code"],
|
|
487
|
-
props["code"] =
|
|
516
|
+
if not isinstance(props["code"], ImmutableVar):
|
|
517
|
+
props["code"] = LiteralVar.create(props["code"])
|
|
488
518
|
|
|
489
519
|
# Create the component.
|
|
490
520
|
code_block = super().create(
|
|
@@ -503,18 +533,15 @@ class CodeBlock(Component):
|
|
|
503
533
|
|
|
504
534
|
def _render(self):
|
|
505
535
|
out = super()._render()
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
)
|
|
514
|
-
|
|
515
|
-
out.special_props.add(
|
|
516
|
-
Var.create_safe(f"children={str(self.code)}", _var_is_string=False)
|
|
517
|
-
)
|
|
536
|
+
|
|
537
|
+
theme = self.theme.upcast()._replace(
|
|
538
|
+
_var_name=replace_quotes_with_camel_case(str(self.theme))
|
|
539
|
+
)
|
|
540
|
+
|
|
541
|
+
out.add_props(style=theme).remove_props("theme", "code").add_props(
|
|
542
|
+
children=self.code
|
|
543
|
+
)
|
|
544
|
+
|
|
518
545
|
return out
|
|
519
546
|
|
|
520
547
|
@staticmethod
|
|
@@ -8,9 +8,10 @@ from typing import Any, Callable, Dict, Literal, Optional, Union, overload
|
|
|
8
8
|
from reflex.components.component import Component
|
|
9
9
|
from reflex.constants.colors import Color
|
|
10
10
|
from reflex.event import EventHandler, EventSpec
|
|
11
|
+
from reflex.ivars.base import ImmutableVar
|
|
11
12
|
from reflex.style import Style
|
|
12
13
|
from reflex.utils.imports import ImportDict
|
|
13
|
-
from reflex.vars import
|
|
14
|
+
from reflex.vars import Var
|
|
14
15
|
|
|
15
16
|
LiteralCodeBlockTheme = Literal[
|
|
16
17
|
"a11y-dark",
|
|
@@ -341,6 +342,8 @@ LiteralCodeLanguage = Literal[
|
|
|
341
342
|
"zig",
|
|
342
343
|
]
|
|
343
344
|
|
|
345
|
+
def replace_quotes_with_camel_case(value: str) -> str: ...
|
|
346
|
+
|
|
344
347
|
class CodeBlock(Component):
|
|
345
348
|
def add_imports(self) -> ImportDict: ...
|
|
346
349
|
@overload
|
|
@@ -1029,51 +1032,51 @@ class CodeBlock(Component):
|
|
|
1029
1032
|
id: Optional[Any] = None,
|
|
1030
1033
|
class_name: Optional[Any] = None,
|
|
1031
1034
|
autofocus: Optional[bool] = None,
|
|
1032
|
-
custom_attrs: Optional[Dict[str, Union[
|
|
1035
|
+
custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
|
|
1033
1036
|
on_blur: Optional[
|
|
1034
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1037
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1035
1038
|
] = None,
|
|
1036
1039
|
on_click: Optional[
|
|
1037
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1040
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1038
1041
|
] = None,
|
|
1039
1042
|
on_context_menu: Optional[
|
|
1040
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1043
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1041
1044
|
] = None,
|
|
1042
1045
|
on_double_click: Optional[
|
|
1043
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1046
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1044
1047
|
] = None,
|
|
1045
1048
|
on_focus: Optional[
|
|
1046
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1049
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1047
1050
|
] = None,
|
|
1048
1051
|
on_mount: Optional[
|
|
1049
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1052
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1050
1053
|
] = None,
|
|
1051
1054
|
on_mouse_down: Optional[
|
|
1052
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1055
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1053
1056
|
] = None,
|
|
1054
1057
|
on_mouse_enter: Optional[
|
|
1055
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1058
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1056
1059
|
] = None,
|
|
1057
1060
|
on_mouse_leave: Optional[
|
|
1058
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1061
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1059
1062
|
] = None,
|
|
1060
1063
|
on_mouse_move: Optional[
|
|
1061
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1064
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1062
1065
|
] = None,
|
|
1063
1066
|
on_mouse_out: Optional[
|
|
1064
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1067
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1065
1068
|
] = None,
|
|
1066
1069
|
on_mouse_over: Optional[
|
|
1067
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1070
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1068
1071
|
] = None,
|
|
1069
1072
|
on_mouse_up: Optional[
|
|
1070
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1073
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1071
1074
|
] = None,
|
|
1072
1075
|
on_scroll: Optional[
|
|
1073
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1076
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1074
1077
|
] = None,
|
|
1075
1078
|
on_unmount: Optional[
|
|
1076
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
1079
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
1077
1080
|
] = None,
|
|
1078
1081
|
**props,
|
|
1079
1082
|
) -> "CodeBlock":
|
|
@@ -9,6 +9,8 @@ from reflex.base import Base
|
|
|
9
9
|
from reflex.components.component import Component, NoSSRComponent
|
|
10
10
|
from reflex.components.literals import LiteralRowMarker
|
|
11
11
|
from reflex.event import EventHandler
|
|
12
|
+
from reflex.ivars.base import ImmutableVar
|
|
13
|
+
from reflex.ivars.sequence import ArrayVar
|
|
12
14
|
from reflex.utils import console, format, types
|
|
13
15
|
from reflex.utils.imports import ImportDict, ImportVar
|
|
14
16
|
from reflex.utils.serializers import serializer
|
|
@@ -293,14 +295,12 @@ class DataEditor(NoSSRComponent):
|
|
|
293
295
|
|
|
294
296
|
# Define the name of the getData callback associated with this component and assign to get_cell_content.
|
|
295
297
|
data_callback = f"getData_{editor_id}"
|
|
296
|
-
self.get_cell_content =
|
|
297
|
-
data_callback, _var_is_local=False, _var_is_string=False
|
|
298
|
-
) # type: ignore
|
|
298
|
+
self.get_cell_content = ImmutableVar.create(data_callback) # type: ignore
|
|
299
299
|
|
|
300
300
|
code = [f"function {data_callback}([col, row])" "{"]
|
|
301
301
|
|
|
302
|
-
columns_path =
|
|
303
|
-
data_path =
|
|
302
|
+
columns_path = str(self.columns)
|
|
303
|
+
data_path = str(self.data)
|
|
304
304
|
|
|
305
305
|
code.extend(
|
|
306
306
|
[
|
|
@@ -333,12 +333,18 @@ class DataEditor(NoSSRComponent):
|
|
|
333
333
|
|
|
334
334
|
# If rows is not provided, determine from data.
|
|
335
335
|
if rows is None:
|
|
336
|
-
|
|
336
|
+
if isinstance(data, ImmutableVar) and not isinstance(data, ArrayVar):
|
|
337
|
+
raise ValueError(
|
|
338
|
+
"DataEditor data must be an ArrayVar if rows is not provided."
|
|
339
|
+
)
|
|
340
|
+
props["rows"] = (
|
|
341
|
+
data.length() if isinstance(data, ImmutableVar) else len(data)
|
|
342
|
+
)
|
|
337
343
|
|
|
338
|
-
if not isinstance(columns,
|
|
344
|
+
if not isinstance(columns, ImmutableVar) and len(columns):
|
|
339
345
|
if (
|
|
340
346
|
types.is_dataframe(type(data))
|
|
341
|
-
or isinstance(data,
|
|
347
|
+
or isinstance(data, ImmutableVar)
|
|
342
348
|
and types.is_dataframe(data._var_type)
|
|
343
349
|
):
|
|
344
350
|
raise ValueError(
|
|
@@ -403,9 +409,9 @@ def serialize_dataeditortheme(theme: DataEditorTheme):
|
|
|
403
409
|
Returns:
|
|
404
410
|
The serialized theme.
|
|
405
411
|
"""
|
|
406
|
-
return
|
|
407
|
-
|
|
408
|
-
|
|
412
|
+
return {
|
|
413
|
+
format.to_camel_case(k): v for k, v in theme.__dict__.items() if v is not None
|
|
414
|
+
}
|
|
409
415
|
|
|
410
416
|
|
|
411
417
|
data_editor = DataEditor.create
|
|
@@ -9,10 +9,11 @@ from typing import Any, Callable, Dict, List, Literal, Optional, Union, overload
|
|
|
9
9
|
from reflex.base import Base
|
|
10
10
|
from reflex.components.component import NoSSRComponent
|
|
11
11
|
from reflex.event import EventHandler, EventSpec
|
|
12
|
+
from reflex.ivars.base import ImmutableVar
|
|
12
13
|
from reflex.style import Style
|
|
13
14
|
from reflex.utils.imports import ImportDict
|
|
14
15
|
from reflex.utils.serializers import serializer
|
|
15
|
-
from reflex.vars import
|
|
16
|
+
from reflex.vars import Var
|
|
16
17
|
|
|
17
18
|
class GridColumnIcons(Enum):
|
|
18
19
|
Array = "array"
|
|
@@ -134,99 +135,99 @@ class DataEditor(NoSSRComponent):
|
|
|
134
135
|
id: Optional[Any] = None,
|
|
135
136
|
class_name: Optional[Any] = None,
|
|
136
137
|
autofocus: Optional[bool] = None,
|
|
137
|
-
custom_attrs: Optional[Dict[str, Union[
|
|
138
|
+
custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
|
|
138
139
|
on_blur: Optional[
|
|
139
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
140
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
140
141
|
] = None,
|
|
141
142
|
on_cell_activated: Optional[
|
|
142
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
143
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
143
144
|
] = None,
|
|
144
145
|
on_cell_clicked: Optional[
|
|
145
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
146
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
146
147
|
] = None,
|
|
147
148
|
on_cell_context_menu: Optional[
|
|
148
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
149
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
149
150
|
] = None,
|
|
150
151
|
on_cell_edited: Optional[
|
|
151
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
152
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
152
153
|
] = None,
|
|
153
154
|
on_click: Optional[
|
|
154
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
155
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
155
156
|
] = None,
|
|
156
157
|
on_column_resize: Optional[
|
|
157
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
158
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
158
159
|
] = None,
|
|
159
160
|
on_context_menu: Optional[
|
|
160
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
161
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
161
162
|
] = None,
|
|
162
163
|
on_delete: Optional[
|
|
163
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
164
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
164
165
|
] = None,
|
|
165
166
|
on_double_click: Optional[
|
|
166
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
167
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
167
168
|
] = None,
|
|
168
169
|
on_finished_editing: Optional[
|
|
169
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
170
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
170
171
|
] = None,
|
|
171
172
|
on_focus: Optional[
|
|
172
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
173
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
173
174
|
] = None,
|
|
174
175
|
on_group_header_clicked: Optional[
|
|
175
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
176
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
176
177
|
] = None,
|
|
177
178
|
on_group_header_context_menu: Optional[
|
|
178
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
179
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
179
180
|
] = None,
|
|
180
181
|
on_group_header_renamed: Optional[
|
|
181
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
182
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
182
183
|
] = None,
|
|
183
184
|
on_header_clicked: Optional[
|
|
184
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
185
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
185
186
|
] = None,
|
|
186
187
|
on_header_context_menu: Optional[
|
|
187
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
188
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
188
189
|
] = None,
|
|
189
190
|
on_header_menu_click: Optional[
|
|
190
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
191
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
191
192
|
] = None,
|
|
192
193
|
on_item_hovered: Optional[
|
|
193
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
194
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
194
195
|
] = None,
|
|
195
196
|
on_mount: Optional[
|
|
196
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
197
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
197
198
|
] = None,
|
|
198
199
|
on_mouse_down: Optional[
|
|
199
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
200
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
200
201
|
] = None,
|
|
201
202
|
on_mouse_enter: Optional[
|
|
202
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
203
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
203
204
|
] = None,
|
|
204
205
|
on_mouse_leave: Optional[
|
|
205
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
206
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
206
207
|
] = None,
|
|
207
208
|
on_mouse_move: Optional[
|
|
208
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
209
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
209
210
|
] = None,
|
|
210
211
|
on_mouse_out: Optional[
|
|
211
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
212
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
212
213
|
] = None,
|
|
213
214
|
on_mouse_over: Optional[
|
|
214
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
215
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
215
216
|
] = None,
|
|
216
217
|
on_mouse_up: Optional[
|
|
217
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
218
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
218
219
|
] = None,
|
|
219
220
|
on_row_appended: Optional[
|
|
220
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
221
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
221
222
|
] = None,
|
|
222
223
|
on_scroll: Optional[
|
|
223
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
224
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
224
225
|
] = None,
|
|
225
226
|
on_selection_cleared: Optional[
|
|
226
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
227
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
227
228
|
] = None,
|
|
228
229
|
on_unmount: Optional[
|
|
229
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
230
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
230
231
|
] = None,
|
|
231
232
|
**props,
|
|
232
233
|
) -> "DataEditor":
|
reflex/components/el/__init__.py
CHANGED
|
@@ -10,7 +10,6 @@ _SUBMODULES: set[str] = {"elements"}
|
|
|
10
10
|
_SUBMOD_ATTRS: dict[str, list[str]] = {
|
|
11
11
|
f"elements.{k}": v for k, v in elements._MAPPING.items()
|
|
12
12
|
}
|
|
13
|
-
_PYRIGHT_IGNORE_IMPORTS = elements._PYRIGHT_IGNORE_IMPORTS
|
|
14
13
|
|
|
15
14
|
__getattr__, __dir__, __all__ = lazy_loader.attach(
|
|
16
15
|
__name__,
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
# This file was generated by `reflex/utils/pyi_generator.py`!
|
|
4
4
|
# ------------------------------------------------------
|
|
5
5
|
|
|
6
|
-
from . import elements
|
|
7
6
|
from .elements.forms import Button as Button
|
|
8
7
|
from .elements.forms import Fieldset as Fieldset
|
|
9
8
|
from .elements.forms import Form as Form
|
|
@@ -88,36 +87,28 @@ from .elements.inline import u as u
|
|
|
88
87
|
from .elements.inline import wbr as wbr
|
|
89
88
|
from .elements.media import Area as Area
|
|
90
89
|
from .elements.media import Audio as Audio
|
|
91
|
-
from .elements.media import Defs as Defs
|
|
92
90
|
from .elements.media import Embed as Embed
|
|
93
91
|
from .elements.media import Iframe as Iframe
|
|
94
92
|
from .elements.media import Img as Img
|
|
95
|
-
from .elements.media import LinearGradient as LinearGradient
|
|
96
93
|
from .elements.media import Map as Map
|
|
97
94
|
from .elements.media import Object as Object
|
|
98
|
-
from .elements.media import Path as Path
|
|
99
95
|
from .elements.media import Picture as Picture
|
|
100
96
|
from .elements.media import Portal as Portal
|
|
101
97
|
from .elements.media import Source as Source
|
|
102
|
-
from .elements.media import Stop as Stop
|
|
103
98
|
from .elements.media import Svg as Svg
|
|
104
99
|
from .elements.media import Track as Track
|
|
105
100
|
from .elements.media import Video as Video
|
|
106
101
|
from .elements.media import area as area
|
|
107
102
|
from .elements.media import audio as audio
|
|
108
|
-
from .elements.media import defs as defs # type: ignore
|
|
109
103
|
from .elements.media import embed as embed
|
|
110
104
|
from .elements.media import iframe as iframe
|
|
111
105
|
from .elements.media import image as image
|
|
112
106
|
from .elements.media import img as img
|
|
113
|
-
from .elements.media import lineargradient as lineargradient # type: ignore
|
|
114
107
|
from .elements.media import map as map
|
|
115
108
|
from .elements.media import object as object
|
|
116
|
-
from .elements.media import path as path # type: ignore
|
|
117
109
|
from .elements.media import picture as picture
|
|
118
110
|
from .elements.media import portal as portal
|
|
119
111
|
from .elements.media import source as source
|
|
120
|
-
from .elements.media import stop as stop # type: ignore
|
|
121
112
|
from .elements.media import svg as svg
|
|
122
113
|
from .elements.media import track as track
|
|
123
114
|
from .elements.media import video as video
|
|
@@ -231,5 +222,3 @@ from .elements.typography import ol as ol
|
|
|
231
222
|
from .elements.typography import p as p
|
|
232
223
|
from .elements.typography import pre as pre
|
|
233
224
|
from .elements.typography import ul as ul
|
|
234
|
-
|
|
235
|
-
_PYRIGHT_IGNORE_IMPORTS = elements._PYRIGHT_IGNORE_IMPORTS
|
reflex/components/el/element.pyi
CHANGED
|
@@ -7,8 +7,8 @@ from typing import Any, Callable, Dict, Optional, Union, overload
|
|
|
7
7
|
|
|
8
8
|
from reflex.components.component import Component
|
|
9
9
|
from reflex.event import EventHandler, EventSpec
|
|
10
|
+
from reflex.ivars.base import ImmutableVar
|
|
10
11
|
from reflex.style import Style
|
|
11
|
-
from reflex.vars import BaseVar, Var
|
|
12
12
|
|
|
13
13
|
class Element(Component):
|
|
14
14
|
@overload
|
|
@@ -21,51 +21,51 @@ class Element(Component):
|
|
|
21
21
|
id: Optional[Any] = None,
|
|
22
22
|
class_name: Optional[Any] = None,
|
|
23
23
|
autofocus: Optional[bool] = None,
|
|
24
|
-
custom_attrs: Optional[Dict[str, Union[
|
|
24
|
+
custom_attrs: Optional[Dict[str, Union[ImmutableVar, str]]] = None,
|
|
25
25
|
on_blur: Optional[
|
|
26
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
26
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
27
27
|
] = None,
|
|
28
28
|
on_click: Optional[
|
|
29
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
29
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
30
30
|
] = None,
|
|
31
31
|
on_context_menu: Optional[
|
|
32
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
32
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
33
33
|
] = None,
|
|
34
34
|
on_double_click: Optional[
|
|
35
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
35
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
36
36
|
] = None,
|
|
37
37
|
on_focus: Optional[
|
|
38
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
38
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
39
39
|
] = None,
|
|
40
40
|
on_mount: Optional[
|
|
41
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
41
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
42
42
|
] = None,
|
|
43
43
|
on_mouse_down: Optional[
|
|
44
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
44
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
45
45
|
] = None,
|
|
46
46
|
on_mouse_enter: Optional[
|
|
47
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
47
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
48
48
|
] = None,
|
|
49
49
|
on_mouse_leave: Optional[
|
|
50
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
50
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
51
51
|
] = None,
|
|
52
52
|
on_mouse_move: Optional[
|
|
53
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
53
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
54
54
|
] = None,
|
|
55
55
|
on_mouse_out: Optional[
|
|
56
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
56
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
57
57
|
] = None,
|
|
58
58
|
on_mouse_over: Optional[
|
|
59
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
59
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
60
60
|
] = None,
|
|
61
61
|
on_mouse_up: Optional[
|
|
62
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
62
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
63
63
|
] = None,
|
|
64
64
|
on_scroll: Optional[
|
|
65
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
65
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
66
66
|
] = None,
|
|
67
67
|
on_unmount: Optional[
|
|
68
|
-
Union[EventHandler, EventSpec, list, Callable,
|
|
68
|
+
Union[EventHandler, EventSpec, list, Callable, ImmutableVar]
|
|
69
69
|
] = None,
|
|
70
70
|
**props,
|
|
71
71
|
) -> "Element":
|
|
@@ -65,11 +65,6 @@ _MAPPING = {
|
|
|
65
65
|
"portal",
|
|
66
66
|
"source",
|
|
67
67
|
"svg",
|
|
68
|
-
"defs",
|
|
69
|
-
"lineargradient",
|
|
70
|
-
"LinearGradient",
|
|
71
|
-
"stop",
|
|
72
|
-
"path",
|
|
73
68
|
],
|
|
74
69
|
"metadata": [
|
|
75
70
|
"base",
|
|
@@ -130,13 +125,12 @@ _MAPPING = {
|
|
|
130
125
|
}
|
|
131
126
|
|
|
132
127
|
|
|
133
|
-
EXCLUDE = ["del_", "Del", "image"
|
|
128
|
+
EXCLUDE = ["del_", "Del", "image"]
|
|
134
129
|
for _, v in _MAPPING.items():
|
|
135
130
|
v.extend([mod.capitalize() for mod in v if mod not in EXCLUDE])
|
|
136
131
|
|
|
137
132
|
_SUBMOD_ATTRS: dict[str, list[str]] = _MAPPING
|
|
138
133
|
|
|
139
|
-
_PYRIGHT_IGNORE_IMPORTS = ["stop", "lineargradient", "path", "defs"]
|
|
140
134
|
__getattr__, __dir__, __all__ = lazy_loader.attach(
|
|
141
135
|
__name__,
|
|
142
136
|
submod_attrs=_SUBMOD_ATTRS,
|