reflex 0.7.14a6__py3-none-any.whl → 0.8.0a2__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.

Files changed (211) hide show
  1. reflex/.templates/jinja/app/rxconfig.py.jinja2 +4 -1
  2. reflex/.templates/jinja/web/package.json.jinja2 +1 -1
  3. reflex/.templates/jinja/web/pages/_app.js.jinja2 +16 -10
  4. reflex/.templates/jinja/web/pages/_document.js.jinja2 +1 -1
  5. reflex/.templates/jinja/web/pages/base_page.js.jinja2 +0 -1
  6. reflex/.templates/jinja/web/pages/stateful_component.js.jinja2 +4 -0
  7. reflex/.templates/jinja/web/utils/context.js.jinja2 +25 -8
  8. reflex/.templates/web/app/entry.client.js +8 -0
  9. reflex/.templates/web/app/routes.js +10 -0
  10. reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +12 -37
  11. reflex/.templates/web/postcss.config.js +1 -1
  12. reflex/.templates/web/react-router.config.js +6 -0
  13. reflex/.templates/web/utils/client_side_routing.js +21 -19
  14. reflex/.templates/web/utils/react-theme.js +92 -0
  15. reflex/.templates/web/utils/state.js +160 -67
  16. reflex/.templates/web/vite.config.js +32 -0
  17. reflex/__init__.py +1 -6
  18. reflex/__init__.pyi +0 -4
  19. reflex/app.py +53 -116
  20. reflex/base.py +1 -87
  21. reflex/compiler/compiler.py +41 -8
  22. reflex/compiler/templates.py +3 -3
  23. reflex/compiler/utils.py +73 -33
  24. reflex/components/__init__.py +0 -2
  25. reflex/components/__init__.pyi +0 -3
  26. reflex/components/base/__init__.py +1 -5
  27. reflex/components/base/__init__.pyi +4 -6
  28. reflex/components/base/app_wrap.pyi +5 -4
  29. reflex/components/base/body.pyi +5 -4
  30. reflex/components/base/document.py +18 -14
  31. reflex/components/base/document.pyi +83 -27
  32. reflex/components/base/error_boundary.pyi +5 -4
  33. reflex/components/base/fragment.pyi +5 -4
  34. reflex/components/base/link.pyi +9 -7
  35. reflex/components/base/meta.pyi +17 -13
  36. reflex/components/base/script.py +60 -58
  37. reflex/components/base/script.pyi +246 -31
  38. reflex/components/base/strict_mode.pyi +5 -4
  39. reflex/components/component.py +146 -217
  40. reflex/components/core/__init__.py +1 -0
  41. reflex/components/core/__init__.pyi +1 -0
  42. reflex/components/core/auto_scroll.pyi +5 -4
  43. reflex/components/core/banner.pyi +25 -19
  44. reflex/components/core/client_side_routing.py +7 -6
  45. reflex/components/core/client_side_routing.pyi +6 -56
  46. reflex/components/core/clipboard.pyi +5 -4
  47. reflex/components/core/debounce.py +1 -0
  48. reflex/components/core/debounce.pyi +5 -4
  49. reflex/components/core/foreach.py +3 -2
  50. reflex/components/core/helmet.py +14 -0
  51. reflex/components/{next/base.pyi → core/helmet.pyi} +10 -7
  52. reflex/components/core/html.pyi +5 -4
  53. reflex/components/core/sticky.pyi +17 -13
  54. reflex/components/core/upload.py +2 -1
  55. reflex/components/core/upload.pyi +21 -16
  56. reflex/components/datadisplay/code.py +2 -72
  57. reflex/components/datadisplay/code.pyi +9 -10
  58. reflex/components/datadisplay/dataeditor.pyi +11 -6
  59. reflex/components/datadisplay/shiki_code_block.pyi +13 -10
  60. reflex/components/dynamic.py +5 -5
  61. reflex/components/el/element.pyi +5 -4
  62. reflex/components/el/elements/base.pyi +5 -4
  63. reflex/components/el/elements/forms.pyi +69 -52
  64. reflex/components/el/elements/inline.pyi +113 -85
  65. reflex/components/el/elements/media.pyi +105 -79
  66. reflex/components/el/elements/metadata.pyi +25 -19
  67. reflex/components/el/elements/other.pyi +29 -22
  68. reflex/components/el/elements/scripts.pyi +13 -10
  69. reflex/components/el/elements/sectioning.pyi +61 -46
  70. reflex/components/el/elements/tables.pyi +41 -31
  71. reflex/components/el/elements/typography.pyi +61 -46
  72. reflex/components/field.py +175 -0
  73. reflex/components/gridjs/datatable.py +2 -2
  74. reflex/components/gridjs/datatable.pyi +11 -9
  75. reflex/components/lucide/icon.py +6 -2
  76. reflex/components/lucide/icon.pyi +15 -10
  77. reflex/components/markdown/markdown.pyi +5 -4
  78. reflex/components/moment/moment.pyi +5 -4
  79. reflex/components/plotly/plotly.pyi +19 -10
  80. reflex/components/props.py +376 -27
  81. reflex/components/radix/primitives/accordion.py +8 -1
  82. reflex/components/radix/primitives/accordion.pyi +29 -22
  83. reflex/components/radix/primitives/base.pyi +9 -7
  84. reflex/components/radix/primitives/drawer.pyi +45 -34
  85. reflex/components/radix/primitives/form.pyi +41 -31
  86. reflex/components/radix/primitives/progress.pyi +21 -16
  87. reflex/components/radix/primitives/slider.pyi +21 -16
  88. reflex/components/radix/themes/base.py +3 -3
  89. reflex/components/radix/themes/base.pyi +33 -25
  90. reflex/components/radix/themes/color_mode.pyi +13 -10
  91. reflex/components/radix/themes/components/alert_dialog.pyi +29 -22
  92. reflex/components/radix/themes/components/aspect_ratio.pyi +5 -4
  93. reflex/components/radix/themes/components/avatar.pyi +5 -4
  94. reflex/components/radix/themes/components/badge.pyi +5 -4
  95. reflex/components/radix/themes/components/button.pyi +5 -4
  96. reflex/components/radix/themes/components/callout.pyi +21 -16
  97. reflex/components/radix/themes/components/card.pyi +5 -4
  98. reflex/components/radix/themes/components/checkbox.pyi +13 -10
  99. reflex/components/radix/themes/components/checkbox_cards.pyi +9 -7
  100. reflex/components/radix/themes/components/checkbox_group.pyi +9 -7
  101. reflex/components/radix/themes/components/context_menu.pyi +53 -40
  102. reflex/components/radix/themes/components/data_list.pyi +17 -13
  103. reflex/components/radix/themes/components/dialog.pyi +29 -22
  104. reflex/components/radix/themes/components/dropdown_menu.pyi +33 -25
  105. reflex/components/radix/themes/components/hover_card.pyi +17 -13
  106. reflex/components/radix/themes/components/icon_button.pyi +5 -4
  107. reflex/components/radix/themes/components/inset.pyi +5 -4
  108. reflex/components/radix/themes/components/popover.pyi +17 -13
  109. reflex/components/radix/themes/components/progress.pyi +5 -4
  110. reflex/components/radix/themes/components/radio.pyi +5 -4
  111. reflex/components/radix/themes/components/radio_cards.pyi +9 -7
  112. reflex/components/radix/themes/components/radio_group.pyi +17 -13
  113. reflex/components/radix/themes/components/scroll_area.pyi +5 -4
  114. reflex/components/radix/themes/components/segmented_control.pyi +9 -7
  115. reflex/components/radix/themes/components/select.pyi +37 -28
  116. reflex/components/radix/themes/components/separator.pyi +5 -4
  117. reflex/components/radix/themes/components/skeleton.pyi +5 -4
  118. reflex/components/radix/themes/components/slider.pyi +5 -4
  119. reflex/components/radix/themes/components/spinner.pyi +5 -4
  120. reflex/components/radix/themes/components/switch.pyi +5 -4
  121. reflex/components/radix/themes/components/table.pyi +29 -22
  122. reflex/components/radix/themes/components/tabs.pyi +21 -16
  123. reflex/components/radix/themes/components/text_area.pyi +5 -4
  124. reflex/components/radix/themes/components/text_field.pyi +13 -10
  125. reflex/components/radix/themes/components/tooltip.pyi +5 -4
  126. reflex/components/radix/themes/layout/base.pyi +5 -4
  127. reflex/components/radix/themes/layout/box.pyi +5 -4
  128. reflex/components/radix/themes/layout/center.pyi +5 -4
  129. reflex/components/radix/themes/layout/container.pyi +5 -4
  130. reflex/components/radix/themes/layout/flex.pyi +5 -4
  131. reflex/components/radix/themes/layout/grid.pyi +5 -4
  132. reflex/components/radix/themes/layout/list.pyi +21 -16
  133. reflex/components/radix/themes/layout/section.pyi +5 -4
  134. reflex/components/radix/themes/layout/spacer.pyi +5 -4
  135. reflex/components/radix/themes/layout/stack.pyi +13 -10
  136. reflex/components/radix/themes/typography/blockquote.pyi +5 -4
  137. reflex/components/radix/themes/typography/code.pyi +5 -4
  138. reflex/components/radix/themes/typography/heading.pyi +5 -4
  139. reflex/components/radix/themes/typography/link.py +46 -11
  140. reflex/components/radix/themes/typography/link.pyi +311 -6
  141. reflex/components/radix/themes/typography/text.pyi +29 -22
  142. reflex/components/react_player/audio.pyi +5 -4
  143. reflex/components/react_player/react_player.pyi +5 -4
  144. reflex/components/react_player/video.pyi +5 -4
  145. reflex/components/recharts/cartesian.py +2 -1
  146. reflex/components/recharts/cartesian.pyi +65 -46
  147. reflex/components/recharts/charts.py +4 -2
  148. reflex/components/recharts/charts.pyi +36 -24
  149. reflex/components/recharts/general.pyi +24 -18
  150. reflex/components/recharts/polar.py +8 -4
  151. reflex/components/recharts/polar.pyi +16 -10
  152. reflex/components/recharts/recharts.pyi +9 -7
  153. reflex/components/sonner/toast.py +2 -2
  154. reflex/components/sonner/toast.pyi +10 -8
  155. reflex/config.py +3 -77
  156. reflex/constants/__init__.py +2 -2
  157. reflex/constants/base.py +28 -11
  158. reflex/constants/compiler.py +5 -3
  159. reflex/constants/event.py +1 -0
  160. reflex/constants/installer.py +22 -16
  161. reflex/constants/route.py +19 -7
  162. reflex/constants/state.py +2 -0
  163. reflex/custom_components/custom_components.py +0 -14
  164. reflex/environment.py +1 -1
  165. reflex/event.py +178 -81
  166. reflex/experimental/__init__.py +0 -30
  167. reflex/istate/proxy.py +5 -3
  168. reflex/page.py +0 -27
  169. reflex/plugins/__init__.py +3 -2
  170. reflex/plugins/base.py +5 -1
  171. reflex/plugins/shared_tailwind.py +158 -0
  172. reflex/plugins/sitemap.py +206 -0
  173. reflex/plugins/tailwind_v3.py +13 -106
  174. reflex/plugins/tailwind_v4.py +15 -108
  175. reflex/reflex.py +1 -0
  176. reflex/route.py +15 -21
  177. reflex/state.py +134 -140
  178. reflex/testing.py +58 -10
  179. reflex/utils/build.py +38 -82
  180. reflex/utils/exec.py +59 -161
  181. reflex/utils/export.py +2 -2
  182. reflex/utils/imports.py +0 -4
  183. reflex/utils/misc.py +28 -0
  184. reflex/utils/prerequisites.py +65 -62
  185. reflex/utils/processes.py +8 -7
  186. reflex/utils/pyi_generator.py +21 -9
  187. reflex/utils/serializers.py +14 -1
  188. reflex/utils/types.py +196 -61
  189. reflex/vars/__init__.py +2 -0
  190. reflex/vars/base.py +367 -134
  191. {reflex-0.7.14a6.dist-info → reflex-0.8.0a2.dist-info}/METADATA +12 -5
  192. {reflex-0.7.14a6.dist-info → reflex-0.8.0a2.dist-info}/RECORD +195 -202
  193. reflex/.templates/web/next.config.js +0 -7
  194. reflex/components/base/head.py +0 -20
  195. reflex/components/base/head.pyi +0 -116
  196. reflex/components/next/__init__.py +0 -10
  197. reflex/components/next/base.py +0 -7
  198. reflex/components/next/image.py +0 -117
  199. reflex/components/next/image.pyi +0 -94
  200. reflex/components/next/link.py +0 -20
  201. reflex/components/next/link.pyi +0 -67
  202. reflex/components/next/video.py +0 -38
  203. reflex/components/next/video.pyi +0 -68
  204. reflex/components/suneditor/__init__.py +0 -5
  205. reflex/components/suneditor/editor.py +0 -269
  206. reflex/components/suneditor/editor.pyi +0 -199
  207. reflex/experimental/layout.py +0 -254
  208. reflex/experimental/layout.pyi +0 -814
  209. {reflex-0.7.14a6.dist-info → reflex-0.8.0a2.dist-info}/WHEEL +0 -0
  210. {reflex-0.7.14a6.dist-info → reflex-0.8.0a2.dist-info}/entry_points.txt +0 -0
  211. {reflex-0.7.14a6.dist-info → reflex-0.8.0a2.dist-info}/licenses/LICENSE +0 -0
@@ -3,13 +3,12 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import dataclasses
6
- import typing
7
6
  from typing import ClassVar, Literal
8
7
 
9
8
  from reflex.components.component import Component, ComponentNamespace
10
9
  from reflex.components.core.cond import color_mode_cond
11
10
  from reflex.components.lucide.icon import Icon
12
- from reflex.components.markdown.markdown import _LANGUAGE, MarkdownComponentMap
11
+ from reflex.components.markdown.markdown import MarkdownComponentMap
13
12
  from reflex.components.radix.themes.components.button import Button
14
13
  from reflex.components.radix.themes.layout.box import Box
15
14
  from reflex.constants.colors import Color
@@ -315,7 +314,7 @@ def construct_theme_var(theme: str) -> Var[Theme]:
315
314
  theme,
316
315
  _var_data=VarData(
317
316
  imports={
318
- f"react-syntax-highlighter/dist/cjs/styles/prism/{format.to_kebab_case(theme)}": [
317
+ f"react-syntax-highlighter/dist/esm/styles/prism/{format.to_kebab_case(theme)}": [
319
318
  ImportVar(tag=theme, is_default=True, install=False)
320
319
  ]
321
320
  }
@@ -502,75 +501,6 @@ class CodeBlock(Component, MarkdownComponentMap):
502
501
  def _exclude_props(self) -> list[str]:
503
502
  return ["can_copy", "copy_button"]
504
503
 
505
- @classmethod
506
- def _get_language_registration_hook(cls, language_var: Var = _LANGUAGE) -> Var:
507
- """Get the hook to register the language.
508
-
509
- Args:
510
- language_var: The const/literal Var of the language module to import.
511
- For markdown, uses the default placeholder _LANGUAGE. For direct use,
512
- a LiteralStringVar should be passed via the language prop.
513
-
514
- Returns:
515
- The hook to register the language.
516
- """
517
- language_in_there = Var.create(typing.get_args(LiteralCodeLanguage)).contains(
518
- language_var
519
- )
520
- async_load = f"""
521
- (async () => {{
522
- try {{
523
- const module = await import(`react-syntax-highlighter/dist/cjs/languages/prism/${{{language_var!s}}}`);
524
- SyntaxHighlighter.registerLanguage({language_var!s}, module.default);
525
- }} catch (error) {{
526
- console.error(`Language ${{{language_var!s}}} is not supported for code blocks inside of markdown: `, error);
527
- }}
528
- }})();
529
- """
530
- return Var(
531
- f"""
532
- if ({language_var!s}) {{
533
- if (!{language_in_there!s}) {{
534
- console.warn(`Language \\`${{{language_var!s}}}\\` is not supported for code blocks inside of markdown.`);
535
- {language_var!s} = '';
536
- }} else {{
537
- {async_load!s}
538
- }}
539
- }}
540
- """
541
- if not isinstance(language_var, LiteralVar)
542
- else f"""
543
- if ({language_var!s}) {{
544
- {async_load!s}
545
- }}""",
546
- _var_data=VarData(
547
- imports={
548
- cls.get_fields()["library"].default_value(): [
549
- ImportVar(tag="PrismAsyncLight", alias="SyntaxHighlighter")
550
- ]
551
- },
552
- ),
553
- )
554
-
555
- @classmethod
556
- def get_component_map_custom_code(cls) -> Var:
557
- """Get the custom code for the component.
558
-
559
- Returns:
560
- The custom code for the component.
561
- """
562
- return cls._get_language_registration_hook()
563
-
564
- def add_hooks(self) -> list[str | Var]:
565
- """Add hooks for the component.
566
-
567
- Returns:
568
- The hooks for the component.
569
- """
570
- return [
571
- self._get_language_registration_hook(language_var=self.language),
572
- ]
573
-
574
504
 
575
505
  class CodeblockNamespace(ComponentNamespace):
576
506
  """Namespace for the CodeBlock component."""
@@ -11,7 +11,7 @@ from reflex.components.component import Component, ComponentNamespace
11
11
  from reflex.components.core.breakpoints import Breakpoints
12
12
  from reflex.components.markdown.markdown import MarkdownComponentMap
13
13
  from reflex.constants.colors import Color
14
- from reflex.event import EventType
14
+ from reflex.event import EventType, PointerEventInfo
15
15
  from reflex.vars.base import Var
16
16
 
17
17
  LiteralCodeLanguage = Literal[
@@ -942,9 +942,9 @@ class CodeBlock(Component, MarkdownComponentMap):
942
942
  autofocus: bool | None = None,
943
943
  custom_attrs: dict[str, Var | Any] | None = None,
944
944
  on_blur: EventType[()] | None = None,
945
- on_click: EventType[()] | None = None,
946
- on_context_menu: EventType[()] | None = None,
947
- on_double_click: EventType[()] | None = None,
945
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
946
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
947
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
948
948
  on_focus: EventType[()] | None = None,
949
949
  on_mount: EventType[()] | None = None,
950
950
  on_mouse_down: EventType[()] | None = None,
@@ -955,6 +955,7 @@ class CodeBlock(Component, MarkdownComponentMap):
955
955
  on_mouse_over: EventType[()] | None = None,
956
956
  on_mouse_up: EventType[()] | None = None,
957
957
  on_scroll: EventType[()] | None = None,
958
+ on_scroll_end: EventType[()] | None = None,
958
959
  on_unmount: EventType[()] | None = None,
959
960
  **props,
960
961
  ) -> CodeBlock:
@@ -986,9 +987,6 @@ class CodeBlock(Component, MarkdownComponentMap):
986
987
  """
987
988
 
988
989
  def add_style(self): ...
989
- @classmethod
990
- def get_component_map_custom_code(cls) -> Var: ...
991
- def add_hooks(self) -> list[str | Var]: ...
992
990
 
993
991
  class CodeblockNamespace(ComponentNamespace):
994
992
  themes = Theme
@@ -1582,9 +1580,9 @@ class CodeblockNamespace(ComponentNamespace):
1582
1580
  autofocus: bool | None = None,
1583
1581
  custom_attrs: dict[str, Var | Any] | None = None,
1584
1582
  on_blur: EventType[()] | None = None,
1585
- on_click: EventType[()] | None = None,
1586
- on_context_menu: EventType[()] | None = None,
1587
- on_double_click: EventType[()] | None = None,
1583
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1584
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
1585
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1588
1586
  on_focus: EventType[()] | None = None,
1589
1587
  on_mount: EventType[()] | None = None,
1590
1588
  on_mouse_down: EventType[()] | None = None,
@@ -1595,6 +1593,7 @@ class CodeblockNamespace(ComponentNamespace):
1595
1593
  on_mouse_over: EventType[()] | None = None,
1596
1594
  on_mouse_up: EventType[()] | None = None,
1597
1595
  on_scroll: EventType[()] | None = None,
1596
+ on_scroll_end: EventType[()] | None = None,
1598
1597
  on_unmount: EventType[()] | None = None,
1599
1598
  **props,
1600
1599
  ) -> CodeBlock:
@@ -3,14 +3,14 @@
3
3
  # ------------------- DO NOT EDIT ----------------------
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
+ import dataclasses
6
7
  from collections.abc import Mapping, Sequence
7
8
  from enum import Enum
8
9
  from typing import Any, Literal, TypedDict, overload
9
10
 
10
- from reflex.base import Base
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.utils.serializers import serializer
16
16
  from reflex.vars.base import Var
@@ -43,7 +43,8 @@ class GridColumnIcons(Enum):
43
43
  Uri = "uri"
44
44
  VideoUri = "video_uri"
45
45
 
46
- class DataEditorTheme(Base):
46
+ @dataclasses.dataclass
47
+ class DataEditorThemeBase:
47
48
  accent_color: str | None
48
49
  accent_fg: str | None
49
50
  accent_light: str | None
@@ -77,6 +78,9 @@ class DataEditorTheme(Base):
77
78
  text_light: str | None
78
79
  text_medium: str | None
79
80
 
81
+ @dataclasses.dataclass(init=False)
82
+ class DataEditorTheme(DataEditorThemeBase): ...
83
+
80
84
  class Bounds(TypedDict):
81
85
  x: int
82
86
  y: int
@@ -182,11 +186,11 @@ class DataEditor(NoSSRComponent):
182
186
  on_cell_clicked: EventType[()] | EventType[tuple[int, int]] | None = None,
183
187
  on_cell_context_menu: EventType[()] | EventType[tuple[int, int]] | None = None,
184
188
  on_cell_edited: EventType[()] | EventType[tuple[int, int]] | EventType[tuple[int, int], GridCell] | None = None,
185
- on_click: EventType[()] | None = None,
189
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
186
190
  on_column_resize: EventType[()] | EventType[GridColumn] | EventType[GridColumn, int] | None = None,
187
- on_context_menu: EventType[()] | None = None,
191
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
188
192
  on_delete: EventType[()] | EventType[GridSelection] | None = None,
189
- on_double_click: EventType[()] | None = None,
193
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
190
194
  on_finished_editing: EventType[()] | EventType[GridCell | None] | EventType[GridCell | None, tuple[int, int]] | None = None,
191
195
  on_focus: EventType[()] | None = None,
192
196
  on_group_header_clicked: EventType[()] | EventType[tuple[int, int]] | EventType[tuple[int, int], GridCell] | None = None,
@@ -206,6 +210,7 @@ class DataEditor(NoSSRComponent):
206
210
  on_mouse_up: EventType[()] | None = None,
207
211
  on_row_appended: EventType[()] | None = None,
208
212
  on_scroll: EventType[()] | None = None,
213
+ on_scroll_end: EventType[()] | None = None,
209
214
  on_selection_cleared: EventType[()] | None = None,
210
215
  on_unmount: EventType[()] | None = None,
211
216
  **props,
@@ -11,7 +11,7 @@ from reflex.components.component import Component, ComponentNamespace
11
11
  from reflex.components.core.breakpoints import Breakpoints
12
12
  from reflex.components.markdown.markdown import MarkdownComponentMap
13
13
  from reflex.components.props import NoExtrasAllowedProps
14
- from reflex.event import EventType
14
+ from reflex.event import EventType, PointerEventInfo
15
15
  from reflex.style import Style
16
16
  from reflex.vars.base import Var
17
17
  from reflex.vars.function import FunctionStringVar
@@ -924,9 +924,9 @@ class ShikiCodeBlock(Component, MarkdownComponentMap):
924
924
  autofocus: bool | None = None,
925
925
  custom_attrs: dict[str, Var | Any] | None = None,
926
926
  on_blur: EventType[()] | None = None,
927
- on_click: EventType[()] | None = None,
928
- on_context_menu: EventType[()] | None = None,
929
- on_double_click: EventType[()] | None = None,
927
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
928
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
929
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
930
930
  on_focus: EventType[()] | None = None,
931
931
  on_mount: EventType[()] | None = None,
932
932
  on_mouse_down: EventType[()] | None = None,
@@ -937,6 +937,7 @@ class ShikiCodeBlock(Component, MarkdownComponentMap):
937
937
  on_mouse_over: EventType[()] | None = None,
938
938
  on_mouse_up: EventType[()] | None = None,
939
939
  on_scroll: EventType[()] | None = None,
940
+ on_scroll_end: EventType[()] | None = None,
940
941
  on_unmount: EventType[()] | None = None,
941
942
  **props,
942
943
  ) -> ShikiCodeBlock:
@@ -1542,9 +1543,9 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
1542
1543
  autofocus: bool | None = None,
1543
1544
  custom_attrs: dict[str, Var | Any] | None = None,
1544
1545
  on_blur: EventType[()] | None = None,
1545
- on_click: EventType[()] | None = None,
1546
- on_context_menu: EventType[()] | None = None,
1547
- on_double_click: EventType[()] | None = None,
1546
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1547
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
1548
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1548
1549
  on_focus: EventType[()] | None = None,
1549
1550
  on_mount: EventType[()] | None = None,
1550
1551
  on_mouse_down: EventType[()] | None = None,
@@ -1555,6 +1556,7 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
1555
1556
  on_mouse_over: EventType[()] | None = None,
1556
1557
  on_mouse_up: EventType[()] | None = None,
1557
1558
  on_scroll: EventType[()] | None = None,
1559
+ on_scroll_end: EventType[()] | None = None,
1558
1560
  on_unmount: EventType[()] | None = None,
1559
1561
  **props,
1560
1562
  ) -> ShikiHighLevelCodeBlock:
@@ -2163,9 +2165,9 @@ class CodeblockNamespace(ComponentNamespace):
2163
2165
  autofocus: bool | None = None,
2164
2166
  custom_attrs: dict[str, Var | Any] | None = None,
2165
2167
  on_blur: EventType[()] | None = None,
2166
- on_click: EventType[()] | None = None,
2167
- on_context_menu: EventType[()] | None = None,
2168
- on_double_click: EventType[()] | None = None,
2168
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
2169
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
2170
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
2169
2171
  on_focus: EventType[()] | None = None,
2170
2172
  on_mount: EventType[()] | None = None,
2171
2173
  on_mouse_down: EventType[()] | None = None,
@@ -2176,6 +2178,7 @@ class CodeblockNamespace(ComponentNamespace):
2176
2178
  on_mouse_over: EventType[()] | None = None,
2177
2179
  on_mouse_up: EventType[()] | None = None,
2178
2180
  on_scroll: EventType[()] | None = None,
2181
+ on_scroll_end: EventType[()] | None = None,
2179
2182
  on_unmount: EventType[()] | None = None,
2180
2183
  **props,
2181
2184
  ) -> ShikiHighLevelCodeBlock:
@@ -26,15 +26,14 @@ def get_cdn_url(lib: str) -> str:
26
26
  return f"https://cdn.jsdelivr.net/npm/{lib}" + "/+esm"
27
27
 
28
28
 
29
- bundled_libraries = {
29
+ bundled_libraries = [
30
30
  "react",
31
31
  "@radix-ui/themes",
32
32
  "@emotion/react",
33
- "next/link",
34
33
  f"$/{constants.Dirs.UTILS}/context",
35
34
  f"$/{constants.Dirs.UTILS}/state",
36
35
  f"$/{constants.Dirs.UTILS}/components",
37
- }
36
+ ]
38
37
 
39
38
 
40
39
  def bundle_library(component: Union["Component", str]):
@@ -47,12 +46,12 @@ def bundle_library(component: Union["Component", str]):
47
46
  DynamicComponentMissingLibraryError: Raised when a dynamic component is missing a library.
48
47
  """
49
48
  if isinstance(component, str):
50
- bundled_libraries.add(component)
49
+ bundled_libraries.append(component)
51
50
  return
52
51
  if component.library is None:
53
52
  msg = "Component must have a library to bundle."
54
53
  raise DynamicComponentMissingLibraryError(msg)
55
- bundled_libraries.add(format_library_name(component.library))
54
+ bundled_libraries.append(format_library_name(component.library))
56
55
 
57
56
 
58
57
  def load_dynamic_serializer():
@@ -91,6 +90,7 @@ def load_dynamic_serializer():
91
90
  tag_name="MySSRComponent",
92
91
  memo_trigger_hooks=[],
93
92
  component=component,
93
+ export=True,
94
94
  )
95
95
  ] = None
96
96
 
@@ -8,7 +8,7 @@ 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
14
  class Element(Component):
@@ -29,9 +29,9 @@ class Element(Component):
29
29
  autofocus: bool | None = None,
30
30
  custom_attrs: dict[str, Var | Any] | None = None,
31
31
  on_blur: EventType[()] | None = None,
32
- on_click: EventType[()] | None = None,
33
- on_context_menu: EventType[()] | None = None,
34
- on_double_click: EventType[()] | None = None,
32
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
33
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
34
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
35
35
  on_focus: EventType[()] | None = None,
36
36
  on_mount: EventType[()] | None = None,
37
37
  on_mouse_down: EventType[()] | None = None,
@@ -42,6 +42,7 @@ class Element(Component):
42
42
  on_mouse_over: EventType[()] | None = None,
43
43
  on_mouse_up: EventType[()] | None = None,
44
44
  on_scroll: EventType[()] | None = None,
45
+ on_scroll_end: EventType[()] | None = None,
45
46
  on_unmount: EventType[()] | None = None,
46
47
  **props,
47
48
  ) -> Element:
@@ -8,7 +8,7 @@ from typing import Any, Literal, overload
8
8
 
9
9
  from reflex.components.core.breakpoints import Breakpoints
10
10
  from reflex.components.el.element import Element
11
- from reflex.event import EventType
11
+ from reflex.event import EventType, PointerEventInfo
12
12
  from reflex.vars.base import Var
13
13
 
14
14
  AutoCapitalize = Literal["off", "none", "on", "sentences", "words", "characters"]
@@ -285,9 +285,9 @@ class BaseHTML(Element):
285
285
  autofocus: bool | None = None,
286
286
  custom_attrs: dict[str, Var | Any] | None = None,
287
287
  on_blur: EventType[()] | None = None,
288
- on_click: EventType[()] | None = None,
289
- on_context_menu: EventType[()] | None = None,
290
- on_double_click: EventType[()] | None = None,
288
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
289
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
290
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
291
291
  on_focus: EventType[()] | None = None,
292
292
  on_mount: EventType[()] | None = None,
293
293
  on_mouse_down: EventType[()] | None = None,
@@ -298,6 +298,7 @@ class BaseHTML(Element):
298
298
  on_mouse_over: EventType[()] | None = None,
299
299
  on_mouse_up: EventType[()] | None = None,
300
300
  on_scroll: EventType[()] | None = None,
301
+ on_scroll_end: EventType[()] | None = None,
301
302
  on_unmount: EventType[()] | None = None,
302
303
  **props,
303
304
  ) -> BaseHTML: