reflex 0.7.14a5__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.

Files changed (236) 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 +21 -11
  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/styles/styles.css.jinja2 +1 -0
  8. reflex/.templates/jinja/web/utils/context.js.jinja2 +25 -8
  9. reflex/.templates/web/app/entry.client.js +8 -0
  10. reflex/.templates/web/app/routes.js +10 -0
  11. reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +12 -37
  12. reflex/.templates/web/postcss.config.js +1 -1
  13. reflex/.templates/web/react-router.config.js +6 -0
  14. reflex/.templates/web/styles/__reflex_style_reset.css +399 -0
  15. reflex/.templates/web/utils/client_side_routing.js +21 -19
  16. reflex/.templates/web/utils/react-theme.js +92 -0
  17. reflex/.templates/web/utils/state.js +251 -100
  18. reflex/.templates/web/vite-plugin-safari-cachebust.js +160 -0
  19. reflex/.templates/web/vite.config.js +39 -0
  20. reflex/__init__.py +1 -6
  21. reflex/__init__.pyi +327 -192
  22. reflex/app.py +103 -152
  23. reflex/base.py +1 -87
  24. reflex/compiler/compiler.py +70 -19
  25. reflex/compiler/templates.py +3 -3
  26. reflex/compiler/utils.py +91 -33
  27. reflex/components/__init__.py +0 -2
  28. reflex/components/__init__.pyi +34 -18
  29. reflex/components/base/__init__.py +1 -5
  30. reflex/components/base/__init__.pyi +30 -21
  31. reflex/components/base/app_wrap.pyi +7 -7
  32. reflex/components/base/body.pyi +7 -7
  33. reflex/components/base/document.py +18 -14
  34. reflex/components/base/document.pyi +88 -38
  35. reflex/components/base/error_boundary.pyi +7 -7
  36. reflex/components/base/fragment.pyi +7 -7
  37. reflex/components/base/link.pyi +12 -12
  38. reflex/components/base/meta.py +4 -15
  39. reflex/components/base/meta.pyi +31 -31
  40. reflex/components/base/script.py +60 -58
  41. reflex/components/base/script.pyi +248 -34
  42. reflex/components/base/strict_mode.pyi +7 -7
  43. reflex/components/component.py +146 -217
  44. reflex/components/core/__init__.py +1 -0
  45. reflex/components/core/__init__.pyi +77 -37
  46. reflex/components/core/auto_scroll.pyi +7 -7
  47. reflex/components/core/banner.pyi +33 -33
  48. reflex/components/core/client_side_routing.py +7 -6
  49. reflex/components/core/client_side_routing.pyi +8 -59
  50. reflex/components/core/clipboard.pyi +7 -7
  51. reflex/components/core/debounce.py +1 -0
  52. reflex/components/core/debounce.pyi +7 -7
  53. reflex/components/core/foreach.py +5 -4
  54. reflex/components/core/helmet.py +14 -0
  55. reflex/components/{next/base.pyi → core/helmet.pyi} +12 -10
  56. reflex/components/core/html.pyi +7 -7
  57. reflex/components/core/match.py +3 -3
  58. reflex/components/core/sticky.pyi +21 -20
  59. reflex/components/core/upload.py +4 -2
  60. reflex/components/core/upload.pyi +26 -25
  61. reflex/components/datadisplay/__init__.pyi +13 -7
  62. reflex/components/datadisplay/code.py +14 -79
  63. reflex/components/datadisplay/code.pyi +11 -13
  64. reflex/components/datadisplay/dataeditor.pyi +38 -15
  65. reflex/components/datadisplay/shiki_code_block.py +5 -3
  66. reflex/components/datadisplay/shiki_code_block.pyi +16 -15
  67. reflex/components/dynamic.py +5 -5
  68. reflex/components/el/__init__.pyi +506 -246
  69. reflex/components/el/element.pyi +7 -7
  70. reflex/components/el/elements/__init__.pyi +504 -245
  71. reflex/components/el/elements/base.pyi +7 -7
  72. reflex/components/el/elements/forms.pyi +146 -101
  73. reflex/components/el/elements/inline.pyi +142 -142
  74. reflex/components/el/elements/media.pyi +131 -130
  75. reflex/components/el/elements/metadata.pyi +32 -32
  76. reflex/components/el/elements/other.pyi +37 -37
  77. reflex/components/el/elements/scripts.pyi +17 -17
  78. reflex/components/el/elements/sectioning.pyi +77 -77
  79. reflex/components/el/elements/tables.pyi +52 -52
  80. reflex/components/el/elements/typography.pyi +77 -77
  81. reflex/components/field.py +175 -0
  82. reflex/components/gridjs/datatable.py +2 -2
  83. reflex/components/gridjs/datatable.pyi +14 -14
  84. reflex/components/lucide/icon.py +6 -2
  85. reflex/components/lucide/icon.pyi +19 -17
  86. reflex/components/markdown/markdown.py +5 -3
  87. reflex/components/markdown/markdown.pyi +7 -7
  88. reflex/components/moment/moment.py +1 -1
  89. reflex/components/moment/moment.pyi +7 -7
  90. reflex/components/plotly/plotly.py +12 -6
  91. reflex/components/plotly/plotly.pyi +50 -49
  92. reflex/components/props.py +376 -27
  93. reflex/components/radix/__init__.pyi +123 -65
  94. reflex/components/radix/primitives/__init__.pyi +6 -4
  95. reflex/components/radix/primitives/accordion.py +8 -1
  96. reflex/components/radix/primitives/accordion.pyi +37 -37
  97. reflex/components/radix/primitives/base.pyi +12 -12
  98. reflex/components/radix/primitives/drawer.pyi +56 -55
  99. reflex/components/radix/primitives/form.pyi +63 -53
  100. reflex/components/radix/primitives/progress.pyi +26 -25
  101. reflex/components/radix/primitives/slider.pyi +27 -27
  102. reflex/components/radix/themes/__init__.pyi +5 -6
  103. reflex/components/radix/themes/base.py +3 -3
  104. reflex/components/radix/themes/base.pyi +42 -42
  105. reflex/components/radix/themes/color_mode.py +5 -6
  106. reflex/components/radix/themes/color_mode.pyi +17 -17
  107. reflex/components/radix/themes/components/__init__.pyi +75 -38
  108. reflex/components/radix/themes/components/alert_dialog.pyi +37 -37
  109. reflex/components/radix/themes/components/aspect_ratio.pyi +7 -7
  110. reflex/components/radix/themes/components/avatar.pyi +7 -7
  111. reflex/components/radix/themes/components/badge.pyi +7 -7
  112. reflex/components/radix/themes/components/button.pyi +7 -7
  113. reflex/components/radix/themes/components/callout.pyi +26 -25
  114. reflex/components/radix/themes/components/card.pyi +7 -7
  115. reflex/components/radix/themes/components/checkbox.pyi +16 -15
  116. reflex/components/radix/themes/components/checkbox_cards.pyi +12 -12
  117. reflex/components/radix/themes/components/checkbox_group.pyi +12 -12
  118. reflex/components/radix/themes/components/context_menu.pyi +67 -67
  119. reflex/components/radix/themes/components/data_list.pyi +22 -22
  120. reflex/components/radix/themes/components/dialog.pyi +36 -35
  121. reflex/components/radix/themes/components/dropdown_menu.pyi +42 -42
  122. reflex/components/radix/themes/components/hover_card.pyi +21 -20
  123. reflex/components/radix/themes/components/icon_button.pyi +7 -7
  124. reflex/components/radix/themes/components/inset.pyi +7 -7
  125. reflex/components/radix/themes/components/popover.pyi +22 -22
  126. reflex/components/radix/themes/components/progress.pyi +7 -7
  127. reflex/components/radix/themes/components/radio.pyi +7 -7
  128. reflex/components/radix/themes/components/radio_cards.pyi +12 -12
  129. reflex/components/radix/themes/components/radio_group.pyi +21 -20
  130. reflex/components/radix/themes/components/scroll_area.pyi +7 -7
  131. reflex/components/radix/themes/components/segmented_control.pyi +12 -12
  132. reflex/components/radix/themes/components/select.pyi +46 -45
  133. reflex/components/radix/themes/components/separator.pyi +7 -7
  134. reflex/components/radix/themes/components/skeleton.pyi +7 -7
  135. reflex/components/radix/themes/components/slider.pyi +17 -9
  136. reflex/components/radix/themes/components/spinner.pyi +7 -7
  137. reflex/components/radix/themes/components/switch.pyi +7 -7
  138. reflex/components/radix/themes/components/table.pyi +37 -37
  139. reflex/components/radix/themes/components/tabs.pyi +26 -25
  140. reflex/components/radix/themes/components/text_area.pyi +15 -9
  141. reflex/components/radix/themes/components/text_field.pyi +32 -19
  142. reflex/components/radix/themes/components/tooltip.pyi +7 -7
  143. reflex/components/radix/themes/layout/__init__.pyi +27 -14
  144. reflex/components/radix/themes/layout/base.pyi +7 -7
  145. reflex/components/radix/themes/layout/box.pyi +7 -7
  146. reflex/components/radix/themes/layout/center.pyi +7 -7
  147. reflex/components/radix/themes/layout/container.pyi +7 -7
  148. reflex/components/radix/themes/layout/flex.pyi +7 -7
  149. reflex/components/radix/themes/layout/grid.pyi +7 -7
  150. reflex/components/radix/themes/layout/list.pyi +26 -25
  151. reflex/components/radix/themes/layout/section.pyi +7 -7
  152. reflex/components/radix/themes/layout/spacer.pyi +7 -7
  153. reflex/components/radix/themes/layout/stack.pyi +17 -17
  154. reflex/components/radix/themes/typography/__init__.pyi +7 -5
  155. reflex/components/radix/themes/typography/blockquote.pyi +7 -7
  156. reflex/components/radix/themes/typography/code.pyi +7 -7
  157. reflex/components/radix/themes/typography/heading.pyi +7 -7
  158. reflex/components/radix/themes/typography/link.py +46 -11
  159. reflex/components/radix/themes/typography/link.pyi +312 -9
  160. reflex/components/radix/themes/typography/text.pyi +36 -35
  161. reflex/components/react_player/audio.pyi +10 -8
  162. reflex/components/react_player/react_player.pyi +7 -7
  163. reflex/components/react_player/video.pyi +10 -8
  164. reflex/components/recharts/__init__.pyi +208 -100
  165. reflex/components/recharts/cartesian.py +10 -8
  166. reflex/components/recharts/cartesian.pyi +90 -94
  167. reflex/components/recharts/charts.py +4 -2
  168. reflex/components/recharts/charts.pyi +49 -49
  169. reflex/components/recharts/general.pyi +31 -31
  170. reflex/components/recharts/polar.py +8 -4
  171. reflex/components/recharts/polar.pyi +23 -23
  172. reflex/components/recharts/recharts.py +2 -2
  173. reflex/components/recharts/recharts.pyi +12 -12
  174. reflex/components/sonner/toast.py +3 -3
  175. reflex/components/sonner/toast.pyi +9 -9
  176. reflex/config.py +10 -113
  177. reflex/constants/__init__.py +2 -2
  178. reflex/constants/base.py +28 -11
  179. reflex/constants/compiler.py +12 -3
  180. reflex/constants/event.py +1 -0
  181. reflex/constants/installer.py +26 -20
  182. reflex/constants/route.py +27 -8
  183. reflex/constants/state.py +2 -0
  184. reflex/custom_components/custom_components.py +0 -14
  185. reflex/environment.py +77 -5
  186. reflex/event.py +178 -81
  187. reflex/experimental/__init__.py +0 -30
  188. reflex/istate/__init__.py +69 -0
  189. reflex/istate/manager.py +1 -0
  190. reflex/istate/proxy.py +5 -3
  191. reflex/page.py +0 -27
  192. reflex/plugins/__init__.py +3 -2
  193. reflex/plugins/base.py +5 -1
  194. reflex/plugins/shared_tailwind.py +215 -0
  195. reflex/plugins/sitemap.py +206 -0
  196. reflex/plugins/tailwind_v3.py +15 -108
  197. reflex/plugins/tailwind_v4.py +18 -110
  198. reflex/reflex.py +1 -0
  199. reflex/route.py +157 -75
  200. reflex/state.py +171 -155
  201. reflex/testing.py +86 -16
  202. reflex/utils/build.py +38 -82
  203. reflex/utils/exec.py +83 -175
  204. reflex/utils/export.py +2 -2
  205. reflex/utils/format.py +1 -5
  206. reflex/utils/imports.py +5 -16
  207. reflex/utils/misc.py +67 -0
  208. reflex/utils/prerequisites.py +66 -68
  209. reflex/utils/processes.py +24 -47
  210. reflex/utils/pyi_generator.py +44 -49
  211. reflex/utils/serializers.py +14 -1
  212. reflex/utils/telemetry.py +0 -15
  213. reflex/utils/types.py +197 -62
  214. reflex/vars/__init__.py +2 -0
  215. reflex/vars/base.py +367 -134
  216. {reflex-0.7.14a5.dist-info → reflex-0.8.0.dist-info}/METADATA +15 -8
  217. reflex-0.8.0.dist-info/RECORD +403 -0
  218. reflex/.templates/web/next.config.js +0 -7
  219. reflex/components/base/head.py +0 -20
  220. reflex/components/base/head.pyi +0 -116
  221. reflex/components/next/__init__.py +0 -10
  222. reflex/components/next/base.py +0 -7
  223. reflex/components/next/image.py +0 -117
  224. reflex/components/next/image.pyi +0 -94
  225. reflex/components/next/link.py +0 -20
  226. reflex/components/next/link.pyi +0 -67
  227. reflex/components/next/video.py +0 -38
  228. reflex/components/next/video.pyi +0 -68
  229. reflex/components/suneditor/__init__.py +0 -5
  230. reflex/components/suneditor/editor.py +0 -269
  231. reflex/components/suneditor/editor.pyi +0 -199
  232. reflex/experimental/layout.py +0 -254
  233. reflex-0.7.14a5.dist-info/RECORD +0 -407
  234. {reflex-0.7.14a5.dist-info → reflex-0.8.0.dist-info}/WHEEL +0 -0
  235. {reflex-0.7.14a5.dist-info → reflex-0.8.0.dist-info}/entry_points.txt +0 -0
  236. {reflex-0.7.14a5.dist-info → reflex-0.8.0.dist-info}/licenses/LICENSE +0 -0
@@ -5,12 +5,12 @@
5
5
  # ------------------------------------------------------
6
6
  from collections.abc import Mapping, Sequence
7
7
  from enum import Enum
8
- from typing import Any, Literal, TypedDict, overload
8
+ from typing import Any, Literal, TypedDict
9
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
@@ -128,9 +128,8 @@ class GridColumn(TypedDict):
128
128
  class DataEditor(NoSSRComponent):
129
129
  def add_imports(self) -> ImportDict: ...
130
130
  def add_hooks(self) -> list[str]: ...
131
- @overload
132
131
  @classmethod
133
- def create( # type: ignore
132
+ def create(
134
133
  cls,
135
134
  *children,
136
135
  rows: Var[int] | int | None = None,
@@ -181,20 +180,43 @@ class DataEditor(NoSSRComponent):
181
180
  on_cell_activated: EventType[()] | EventType[tuple[int, int]] | None = None,
182
181
  on_cell_clicked: EventType[()] | EventType[tuple[int, int]] | None = None,
183
182
  on_cell_context_menu: EventType[()] | EventType[tuple[int, int]] | None = None,
184
- on_cell_edited: EventType[()] | EventType[tuple[int, int]] | EventType[tuple[int, int], GridCell] | None = None,
185
- on_click: EventType[()] | None = None,
186
- on_column_resize: EventType[()] | EventType[GridColumn] | EventType[GridColumn, int] | None = None,
187
- on_context_menu: EventType[()] | None = None,
183
+ on_cell_edited: EventType[()]
184
+ | EventType[tuple[int, int]]
185
+ | EventType[tuple[int, int], GridCell]
186
+ | None = None,
187
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
188
+ on_column_resize: EventType[()]
189
+ | EventType[GridColumn]
190
+ | EventType[GridColumn, int]
191
+ | None = None,
192
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
188
193
  on_delete: EventType[()] | EventType[GridSelection] | None = None,
189
- on_double_click: EventType[()] | None = None,
190
- on_finished_editing: EventType[()] | EventType[GridCell | None] | EventType[GridCell | None, tuple[int, int]] | None = None,
194
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
195
+ on_finished_editing: EventType[()]
196
+ | EventType[GridCell | None]
197
+ | EventType[GridCell | None, tuple[int, int]]
198
+ | None = None,
191
199
  on_focus: EventType[()] | None = None,
192
- on_group_header_clicked: EventType[()] | EventType[tuple[int, int]] | EventType[tuple[int, int], GridCell] | None = None,
193
- on_group_header_context_menu: EventType[()] | EventType[int] | EventType[int, GroupHeaderClickedEventArgs] | None = None,
194
- on_group_header_renamed: EventType[()] | EventType[str] | EventType[str, str] | None = None,
200
+ on_group_header_clicked: EventType[()]
201
+ | EventType[tuple[int, int]]
202
+ | EventType[tuple[int, int], GridCell]
203
+ | None = None,
204
+ on_group_header_context_menu: EventType[()]
205
+ | EventType[int]
206
+ | EventType[int, GroupHeaderClickedEventArgs]
207
+ | None = None,
208
+ on_group_header_renamed: EventType[()]
209
+ | EventType[str]
210
+ | EventType[str, str]
211
+ | None = None,
195
212
  on_header_clicked: EventType[()] | EventType[tuple[int, int]] | None = None,
196
- on_header_context_menu: EventType[()] | EventType[tuple[int, int]] | None = None,
197
- on_header_menu_click: EventType[()] | EventType[int] | EventType[int, Rectangle] | None = None,
213
+ on_header_context_menu: EventType[()]
214
+ | EventType[tuple[int, int]]
215
+ | None = None,
216
+ on_header_menu_click: EventType[()]
217
+ | EventType[int]
218
+ | EventType[int, Rectangle]
219
+ | None = None,
198
220
  on_item_hovered: EventType[()] | EventType[tuple[int, int]] | None = None,
199
221
  on_mount: EventType[()] | None = None,
200
222
  on_mouse_down: EventType[()] | None = None,
@@ -206,6 +228,7 @@ class DataEditor(NoSSRComponent):
206
228
  on_mouse_up: EventType[()] | None = None,
207
229
  on_row_appended: EventType[()] | None = None,
208
230
  on_scroll: EventType[()] | None = None,
231
+ on_scroll_end: EventType[()] | None = None,
209
232
  on_selection_cleared: EventType[()] | None = None,
210
233
  on_unmount: EventType[()] | None = None,
211
234
  **props,
@@ -8,7 +8,7 @@ from collections import defaultdict
8
8
  from dataclasses import dataclass
9
9
  from typing import Any, Literal
10
10
 
11
- from reflex.components.component import Component, ComponentNamespace
11
+ from reflex.components.component import Component, ComponentNamespace, field
12
12
  from reflex.components.core.colors import color
13
13
  from reflex.components.core.cond import color_mode_cond
14
14
  from reflex.components.el.elements.forms import Button
@@ -721,10 +721,12 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
721
721
  show_line_numbers: Var[bool]
722
722
 
723
723
  # Whether a copy button should appear.
724
- can_copy: bool = False
724
+ can_copy: bool = field(default=False, is_javascript_property=False)
725
725
 
726
726
  # copy_button: A custom copy button to override the default one.
727
- copy_button: Component | bool | None = None
727
+ copy_button: Component | bool | None = field(
728
+ default=None, is_javascript_property=False
729
+ )
728
730
 
729
731
  @classmethod
730
732
  def create(
@@ -5,13 +5,13 @@
5
5
  # ------------------------------------------------------
6
6
  from collections.abc import Mapping, Sequence
7
7
  from dataclasses import dataclass
8
- from typing import Any, Literal, overload
8
+ from typing import Any, Literal
9
9
 
10
10
  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
@@ -356,9 +356,8 @@ class ShikiJsTransformer(ShikiBaseTransformers):
356
356
  style: Style | None
357
357
 
358
358
  class ShikiCodeBlock(Component, MarkdownComponentMap):
359
- @overload
360
359
  @classmethod
361
- def create( # type: ignore
360
+ def create(
362
361
  cls,
363
362
  *children,
364
363
  language: Literal[
@@ -924,9 +923,9 @@ class ShikiCodeBlock(Component, MarkdownComponentMap):
924
923
  autofocus: bool | None = None,
925
924
  custom_attrs: dict[str, Var | Any] | None = None,
926
925
  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,
926
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
927
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
928
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
930
929
  on_focus: EventType[()] | None = None,
931
930
  on_mount: EventType[()] | None = None,
932
931
  on_mouse_down: EventType[()] | None = None,
@@ -937,6 +936,7 @@ class ShikiCodeBlock(Component, MarkdownComponentMap):
937
936
  on_mouse_over: EventType[()] | None = None,
938
937
  on_mouse_up: EventType[()] | None = None,
939
938
  on_scroll: EventType[()] | None = None,
939
+ on_scroll_end: EventType[()] | None = None,
940
940
  on_unmount: EventType[()] | None = None,
941
941
  **props,
942
942
  ) -> ShikiCodeBlock:
@@ -970,9 +970,8 @@ class ShikiCodeBlock(Component, MarkdownComponentMap):
970
970
  ) -> ShikiBaseTransformers: ...
971
971
 
972
972
  class ShikiHighLevelCodeBlock(ShikiCodeBlock):
973
- @overload
974
973
  @classmethod
975
- def create( # type: ignore
974
+ def create(
976
975
  cls,
977
976
  *children,
978
977
  use_transformers: Var[bool] | bool | None = None,
@@ -1542,9 +1541,9 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
1542
1541
  autofocus: bool | None = None,
1543
1542
  custom_attrs: dict[str, Var | Any] | None = None,
1544
1543
  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,
1544
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1545
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
1546
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
1548
1547
  on_focus: EventType[()] | None = None,
1549
1548
  on_mount: EventType[()] | None = None,
1550
1549
  on_mouse_down: EventType[()] | None = None,
@@ -1555,6 +1554,7 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
1555
1554
  on_mouse_over: EventType[()] | None = None,
1556
1555
  on_mouse_up: EventType[()] | None = None,
1557
1556
  on_scroll: EventType[()] | None = None,
1557
+ on_scroll_end: EventType[()] | None = None,
1558
1558
  on_unmount: EventType[()] | None = None,
1559
1559
  **props,
1560
1560
  ) -> ShikiHighLevelCodeBlock:
@@ -2163,9 +2163,9 @@ class CodeblockNamespace(ComponentNamespace):
2163
2163
  autofocus: bool | None = None,
2164
2164
  custom_attrs: dict[str, Var | Any] | None = None,
2165
2165
  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,
2166
+ on_click: EventType[()] | EventType[PointerEventInfo] | None = None,
2167
+ on_context_menu: EventType[()] | EventType[PointerEventInfo] | None = None,
2168
+ on_double_click: EventType[()] | EventType[PointerEventInfo] | None = None,
2169
2169
  on_focus: EventType[()] | None = None,
2170
2170
  on_mount: EventType[()] | None = None,
2171
2171
  on_mouse_down: EventType[()] | None = None,
@@ -2176,6 +2176,7 @@ class CodeblockNamespace(ComponentNamespace):
2176
2176
  on_mouse_over: EventType[()] | None = None,
2177
2177
  on_mouse_up: EventType[()] | None = None,
2178
2178
  on_scroll: EventType[()] | None = None,
2179
+ on_scroll_end: EventType[()] | None = None,
2179
2180
  on_unmount: EventType[()] | None = None,
2180
2181
  **props,
2181
2182
  ) -> 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