reflex 0.6.8a2__py3-none-any.whl → 0.7.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 (246) hide show
  1. reflex/.templates/jinja/custom_components/pyproject.toml.jinja2 +1 -1
  2. reflex/.templates/jinja/web/pages/_app.js.jinja2 +7 -7
  3. reflex/.templates/jinja/web/pages/utils.js.jinja2 +3 -3
  4. reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +1 -4
  5. reflex/.templates/web/utils/state.js +65 -36
  6. reflex/__init__.py +4 -17
  7. reflex/__init__.pyi +1 -2
  8. reflex/app.py +249 -116
  9. reflex/app_mixins/lifespan.py +9 -9
  10. reflex/app_mixins/middleware.py +6 -6
  11. reflex/app_module_for_backend.py +3 -7
  12. reflex/base.py +7 -7
  13. reflex/compiler/compiler.py +8 -0
  14. reflex/compiler/utils.py +35 -6
  15. reflex/components/base/app_wrap.pyi +16 -16
  16. reflex/components/base/bare.py +1 -1
  17. reflex/components/base/body.pyi +16 -16
  18. reflex/components/base/document.pyi +76 -76
  19. reflex/components/base/error_boundary.py +2 -1
  20. reflex/components/base/error_boundary.pyi +19 -22
  21. reflex/components/base/fragment.pyi +16 -16
  22. reflex/components/base/head.pyi +31 -31
  23. reflex/components/base/link.pyi +31 -31
  24. reflex/components/base/meta.py +2 -2
  25. reflex/components/base/meta.pyi +61 -61
  26. reflex/components/base/script.pyi +19 -19
  27. reflex/components/base/strict_mode.py +10 -0
  28. reflex/components/base/strict_mode.pyi +57 -0
  29. reflex/components/component.py +38 -77
  30. reflex/components/core/banner.py +159 -4
  31. reflex/components/core/banner.pyi +162 -76
  32. reflex/components/core/breakpoints.py +3 -1
  33. reflex/components/core/client_side_routing.py +1 -1
  34. reflex/components/core/client_side_routing.pyi +32 -32
  35. reflex/components/core/clipboard.pyi +17 -20
  36. reflex/components/core/cond.py +9 -10
  37. reflex/components/core/debounce.py +1 -1
  38. reflex/components/core/debounce.pyi +17 -17
  39. reflex/components/core/foreach.py +28 -3
  40. reflex/components/core/html.py +1 -1
  41. reflex/components/core/html.pyi +16 -16
  42. reflex/components/core/match.py +5 -5
  43. reflex/components/core/sticky.py +160 -0
  44. reflex/components/core/sticky.pyi +449 -0
  45. reflex/components/core/upload.py +2 -2
  46. reflex/components/core/upload.pyi +80 -88
  47. reflex/components/datadisplay/code.py +5 -14
  48. reflex/components/datadisplay/code.pyi +31 -31
  49. reflex/components/datadisplay/dataeditor.py +7 -4
  50. reflex/components/datadisplay/dataeditor.pyi +40 -54
  51. reflex/components/datadisplay/logo.py +13 -8
  52. reflex/components/datadisplay/shiki_code_block.py +14 -9
  53. reflex/components/datadisplay/shiki_code_block.pyi +46 -46
  54. reflex/components/dynamic.py +22 -3
  55. reflex/components/el/constants/reflex.py +1 -1
  56. reflex/components/el/element.py +1 -1
  57. reflex/components/el/element.pyi +16 -16
  58. reflex/components/el/elements/base.pyi +16 -16
  59. reflex/components/el/elements/forms.py +4 -4
  60. reflex/components/el/elements/forms.pyi +224 -258
  61. reflex/components/el/elements/inline.pyi +421 -421
  62. reflex/components/el/elements/media.pyi +376 -376
  63. reflex/components/el/elements/metadata.pyi +91 -91
  64. reflex/components/el/elements/other.pyi +106 -106
  65. reflex/components/el/elements/scripts.pyi +46 -46
  66. reflex/components/el/elements/sectioning.pyi +226 -226
  67. reflex/components/el/elements/tables.pyi +151 -151
  68. reflex/components/el/elements/typography.pyi +226 -226
  69. reflex/components/gridjs/datatable.pyi +31 -31
  70. reflex/components/lucide/icon.py +46 -8
  71. reflex/components/lucide/icon.pyi +85 -31
  72. reflex/components/markdown/markdown.py +10 -8
  73. reflex/components/markdown/markdown.pyi +16 -16
  74. reflex/components/moment/moment.py +2 -2
  75. reflex/components/moment/moment.pyi +17 -19
  76. reflex/components/next/base.pyi +16 -16
  77. reflex/components/next/image.py +16 -4
  78. reflex/components/next/image.pyi +22 -20
  79. reflex/components/next/link.py +1 -1
  80. reflex/components/next/link.pyi +16 -16
  81. reflex/components/next/video.pyi +16 -16
  82. reflex/components/plotly/plotly.py +5 -5
  83. reflex/components/plotly/plotly.pyi +34 -44
  84. reflex/components/props.py +3 -3
  85. reflex/components/radix/__init__.pyi +1 -1
  86. reflex/components/radix/primitives/accordion.py +9 -5
  87. reflex/components/radix/primitives/accordion.pyi +110 -108
  88. reflex/components/radix/primitives/base.pyi +31 -31
  89. reflex/components/radix/primitives/drawer.py +5 -2
  90. reflex/components/radix/primitives/drawer.pyi +179 -187
  91. reflex/components/radix/primitives/form.pyi +160 -172
  92. reflex/components/radix/primitives/progress.py +1 -1
  93. reflex/components/radix/primitives/progress.pyi +76 -76
  94. reflex/components/radix/primitives/slider.py +1 -1
  95. reflex/components/radix/primitives/slider.pyi +78 -82
  96. reflex/components/radix/themes/base.pyi +121 -121
  97. reflex/components/radix/themes/color_mode.py +11 -9
  98. reflex/components/radix/themes/color_mode.pyi +47 -49
  99. reflex/components/radix/themes/components/alert_dialog.py +3 -0
  100. reflex/components/radix/themes/components/alert_dialog.pyi +110 -112
  101. reflex/components/radix/themes/components/aspect_ratio.pyi +16 -16
  102. reflex/components/radix/themes/components/avatar.pyi +16 -16
  103. reflex/components/radix/themes/components/badge.pyi +16 -16
  104. reflex/components/radix/themes/components/button.pyi +16 -16
  105. reflex/components/radix/themes/components/callout.pyi +76 -76
  106. reflex/components/radix/themes/components/card.py +1 -1
  107. reflex/components/radix/themes/components/card.pyi +17 -17
  108. reflex/components/radix/themes/components/checkbox.pyi +49 -55
  109. reflex/components/radix/themes/components/checkbox_cards.pyi +31 -31
  110. reflex/components/radix/themes/components/checkbox_group.pyi +31 -31
  111. reflex/components/radix/themes/components/context_menu.py +5 -0
  112. reflex/components/radix/themes/components/context_menu.pyi +149 -155
  113. reflex/components/radix/themes/components/data_list.pyi +61 -61
  114. reflex/components/radix/themes/components/dialog.py +3 -0
  115. reflex/components/radix/themes/components/dialog.pyi +113 -117
  116. reflex/components/radix/themes/components/dropdown_menu.py +5 -0
  117. reflex/components/radix/themes/components/dropdown_menu.pyi +133 -137
  118. reflex/components/radix/themes/components/hover_card.py +3 -0
  119. reflex/components/radix/themes/components/hover_card.pyi +63 -67
  120. reflex/components/radix/themes/components/icon_button.py +2 -2
  121. reflex/components/radix/themes/components/icon_button.pyi +17 -16
  122. reflex/components/radix/themes/components/inset.pyi +16 -16
  123. reflex/components/radix/themes/components/popover.py +3 -0
  124. reflex/components/radix/themes/components/popover.pyi +68 -70
  125. reflex/components/radix/themes/components/progress.pyi +16 -16
  126. reflex/components/radix/themes/components/radio.pyi +16 -16
  127. reflex/components/radix/themes/components/radio_cards.py +2 -0
  128. reflex/components/radix/themes/components/radio_cards.pyi +32 -34
  129. reflex/components/radix/themes/components/radio_group.py +1 -1
  130. reflex/components/radix/themes/components/radio_group.pyi +62 -64
  131. reflex/components/radix/themes/components/scroll_area.pyi +16 -16
  132. reflex/components/radix/themes/components/segmented_control.pyi +32 -35
  133. reflex/components/radix/themes/components/select.py +4 -0
  134. reflex/components/radix/themes/components/select.pyi +145 -157
  135. reflex/components/radix/themes/components/separator.pyi +16 -16
  136. reflex/components/radix/themes/components/skeleton.py +3 -0
  137. reflex/components/radix/themes/components/skeleton.pyi +16 -16
  138. reflex/components/radix/themes/components/slider.pyi +22 -28
  139. reflex/components/radix/themes/components/spinner.pyi +16 -16
  140. reflex/components/radix/themes/components/switch.pyi +17 -19
  141. reflex/components/radix/themes/components/table.pyi +106 -106
  142. reflex/components/radix/themes/components/tabs.py +3 -0
  143. reflex/components/radix/themes/components/tabs.pyi +78 -82
  144. reflex/components/radix/themes/components/text_area.py +12 -0
  145. reflex/components/radix/themes/components/text_area.pyi +21 -33
  146. reflex/components/radix/themes/components/text_field.py +1 -1
  147. reflex/components/radix/themes/components/text_field.pyi +52 -80
  148. reflex/components/radix/themes/components/tooltip.py +6 -1
  149. reflex/components/radix/themes/components/tooltip.pyi +20 -21
  150. reflex/components/radix/themes/layout/__init__.pyi +1 -1
  151. reflex/components/radix/themes/layout/base.pyi +16 -16
  152. reflex/components/radix/themes/layout/box.pyi +16 -16
  153. reflex/components/radix/themes/layout/center.pyi +16 -16
  154. reflex/components/radix/themes/layout/container.pyi +16 -16
  155. reflex/components/radix/themes/layout/flex.pyi +16 -16
  156. reflex/components/radix/themes/layout/grid.pyi +16 -16
  157. reflex/components/radix/themes/layout/list.py +2 -2
  158. reflex/components/radix/themes/layout/list.pyi +76 -76
  159. reflex/components/radix/themes/layout/section.pyi +16 -16
  160. reflex/components/radix/themes/layout/spacer.pyi +16 -16
  161. reflex/components/radix/themes/layout/stack.py +2 -2
  162. reflex/components/radix/themes/layout/stack.pyi +46 -46
  163. reflex/components/radix/themes/typography/blockquote.pyi +16 -16
  164. reflex/components/radix/themes/typography/code.pyi +16 -16
  165. reflex/components/radix/themes/typography/heading.pyi +16 -16
  166. reflex/components/radix/themes/typography/link.py +1 -1
  167. reflex/components/radix/themes/typography/link.pyi +16 -16
  168. reflex/components/radix/themes/typography/text.py +2 -2
  169. reflex/components/radix/themes/typography/text.pyi +106 -106
  170. reflex/components/react_player/audio.pyi +33 -39
  171. reflex/components/react_player/react_player.py +1 -1
  172. reflex/components/react_player/react_player.pyi +32 -38
  173. reflex/components/react_player/video.pyi +33 -39
  174. reflex/components/recharts/__init__.py +2 -0
  175. reflex/components/recharts/__init__.pyi +2 -0
  176. reflex/components/recharts/cartesian.pyi +282 -282
  177. reflex/components/recharts/charts.py +15 -15
  178. reflex/components/recharts/charts.pyi +164 -164
  179. reflex/components/recharts/general.py +19 -4
  180. reflex/components/recharts/general.pyi +132 -81
  181. reflex/components/recharts/polar.py +2 -2
  182. reflex/components/recharts/polar.pyi +55 -55
  183. reflex/components/recharts/recharts.py +4 -4
  184. reflex/components/recharts/recharts.pyi +31 -31
  185. reflex/components/sonner/toast.py +15 -13
  186. reflex/components/sonner/toast.pyi +22 -22
  187. reflex/components/suneditor/editor.py +6 -4
  188. reflex/components/suneditor/editor.pyi +26 -40
  189. reflex/components/tags/iter_tag.py +3 -3
  190. reflex/components/tags/tag.py +25 -3
  191. reflex/config.py +48 -15
  192. reflex/constants/__init__.py +1 -0
  193. reflex/constants/base.py +4 -1
  194. reflex/constants/compiler.py +5 -2
  195. reflex/constants/config.py +8 -1
  196. reflex/constants/installer.py +9 -9
  197. reflex/constants/style.py +1 -1
  198. reflex/custom_components/custom_components.py +9 -7
  199. reflex/event.py +215 -208
  200. reflex/experimental/__init__.py +19 -11
  201. reflex/experimental/client_state.py +53 -28
  202. reflex/experimental/hooks.py +5 -5
  203. reflex/experimental/layout.py +8 -5
  204. reflex/experimental/layout.pyi +79 -83
  205. reflex/experimental/misc.py +3 -3
  206. reflex/istate/wrappers.py +1 -1
  207. reflex/middleware/hydrate_middleware.py +2 -2
  208. reflex/model.py +11 -6
  209. reflex/page.py +5 -5
  210. reflex/reflex.py +90 -19
  211. reflex/route.py +1 -1
  212. reflex/state.py +358 -401
  213. reflex/style.py +27 -3
  214. reflex/testing.py +29 -23
  215. reflex/utils/build.py +6 -2
  216. reflex/utils/codespaces.py +1 -4
  217. reflex/utils/compat.py +6 -5
  218. reflex/utils/console.py +52 -16
  219. reflex/utils/exceptions.py +89 -26
  220. reflex/utils/exec.py +69 -74
  221. reflex/utils/export.py +6 -1
  222. reflex/utils/format.py +8 -40
  223. reflex/utils/imports.py +2 -2
  224. reflex/utils/lazy_loader.py +7 -1
  225. reflex/utils/path_ops.py +28 -14
  226. reflex/utils/prerequisites.py +326 -67
  227. reflex/utils/processes.py +45 -32
  228. reflex/utils/pyi_generator.py +39 -33
  229. reflex/utils/registry.py +4 -4
  230. reflex/utils/serializers.py +1 -1
  231. reflex/utils/telemetry.py +5 -4
  232. reflex/utils/types.py +42 -18
  233. reflex/vars/base.py +656 -333
  234. reflex/vars/datetime.py +6 -7
  235. reflex/vars/dep_tracking.py +344 -0
  236. reflex/vars/function.py +11 -5
  237. reflex/vars/number.py +31 -43
  238. reflex/vars/object.py +63 -62
  239. reflex/vars/sequence.py +79 -67
  240. {reflex-0.6.8a2.dist-info → reflex-0.7.0a2.dist-info}/METADATA +7 -8
  241. reflex-0.7.0a2.dist-info/RECORD +401 -0
  242. {reflex-0.6.8a2.dist-info → reflex-0.7.0a2.dist-info}/WHEEL +1 -1
  243. reflex/experimental/assets.py +0 -37
  244. reflex-0.6.8a2.dist-info/RECORD +0 -397
  245. {reflex-0.6.8a2.dist-info → reflex-0.7.0a2.dist-info}/LICENSE +0 -0
  246. {reflex-0.6.8a2.dist-info → reflex-0.7.0a2.dist-info}/entry_points.txt +0 -0
@@ -9,7 +9,7 @@ from typing import Any, ClassVar, Dict, List, Optional, Union, overload
9
9
  from reflex.components.base.fragment import Fragment
10
10
  from reflex.components.component import Component, ComponentNamespace, MemoizationLeaf
11
11
  from reflex.constants import Dirs
12
- from reflex.event import BASE_STATE, CallableEventSpec, EventSpec, EventType
12
+ from reflex.event import CallableEventSpec, EventSpec, EventType
13
13
  from reflex.style import Style
14
14
  from reflex.utils.imports import ImportVar
15
15
  from reflex.vars import VarData
@@ -51,21 +51,21 @@ class UploadFilesProvider(Component):
51
51
  class_name: Optional[Any] = None,
52
52
  autofocus: Optional[bool] = None,
53
53
  custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
54
- on_blur: Optional[EventType[[], BASE_STATE]] = None,
55
- on_click: Optional[EventType[[], BASE_STATE]] = None,
56
- on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
57
- on_double_click: Optional[EventType[[], BASE_STATE]] = None,
58
- on_focus: Optional[EventType[[], BASE_STATE]] = None,
59
- on_mount: Optional[EventType[[], BASE_STATE]] = None,
60
- on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
61
- on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
62
- on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
63
- on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
64
- on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
65
- on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
66
- on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
67
- on_scroll: Optional[EventType[[], BASE_STATE]] = None,
68
- on_unmount: Optional[EventType[[], BASE_STATE]] = None,
54
+ on_blur: Optional[EventType[()]] = None,
55
+ on_click: Optional[EventType[()]] = None,
56
+ on_context_menu: Optional[EventType[()]] = None,
57
+ on_double_click: Optional[EventType[()]] = None,
58
+ on_focus: Optional[EventType[()]] = None,
59
+ on_mount: Optional[EventType[()]] = None,
60
+ on_mouse_down: Optional[EventType[()]] = None,
61
+ on_mouse_enter: Optional[EventType[()]] = None,
62
+ on_mouse_leave: Optional[EventType[()]] = None,
63
+ on_mouse_move: Optional[EventType[()]] = None,
64
+ on_mouse_out: Optional[EventType[()]] = None,
65
+ on_mouse_over: Optional[EventType[()]] = None,
66
+ on_mouse_up: Optional[EventType[()]] = None,
67
+ on_scroll: Optional[EventType[()]] = None,
68
+ on_unmount: Optional[EventType[()]] = None,
69
69
  **props,
70
70
  ) -> "UploadFilesProvider":
71
71
  """Create the component.
@@ -97,24 +97,22 @@ class GhostUpload(Fragment):
97
97
  class_name: Optional[Any] = None,
98
98
  autofocus: Optional[bool] = None,
99
99
  custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
100
- on_blur: Optional[EventType[[], BASE_STATE]] = None,
101
- on_click: Optional[EventType[[], BASE_STATE]] = None,
102
- on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
103
- on_double_click: Optional[EventType[[], BASE_STATE]] = None,
104
- on_drop: Optional[
105
- Union[EventType[[], BASE_STATE], EventType[[Any], BASE_STATE]]
106
- ] = None,
107
- on_focus: Optional[EventType[[], BASE_STATE]] = None,
108
- on_mount: Optional[EventType[[], BASE_STATE]] = None,
109
- on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
110
- on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
111
- on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
112
- on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
113
- on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
114
- on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
115
- on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
116
- on_scroll: Optional[EventType[[], BASE_STATE]] = None,
117
- on_unmount: Optional[EventType[[], BASE_STATE]] = None,
100
+ on_blur: Optional[EventType[()]] = None,
101
+ on_click: Optional[EventType[()]] = None,
102
+ on_context_menu: Optional[EventType[()]] = None,
103
+ on_double_click: Optional[EventType[()]] = None,
104
+ on_drop: Optional[Union[EventType[()], EventType[Any]]] = None,
105
+ on_focus: Optional[EventType[()]] = None,
106
+ on_mount: Optional[EventType[()]] = None,
107
+ on_mouse_down: Optional[EventType[()]] = None,
108
+ on_mouse_enter: Optional[EventType[()]] = None,
109
+ on_mouse_leave: Optional[EventType[()]] = None,
110
+ on_mouse_move: Optional[EventType[()]] = None,
111
+ on_mouse_out: Optional[EventType[()]] = None,
112
+ on_mouse_over: Optional[EventType[()]] = None,
113
+ on_mouse_up: Optional[EventType[()]] = None,
114
+ on_scroll: Optional[EventType[()]] = None,
115
+ on_unmount: Optional[EventType[()]] = None,
118
116
  **props,
119
117
  ) -> "GhostUpload":
120
118
  """Create the component.
@@ -158,24 +156,22 @@ class Upload(MemoizationLeaf):
158
156
  class_name: Optional[Any] = None,
159
157
  autofocus: Optional[bool] = None,
160
158
  custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
161
- on_blur: Optional[EventType[[], BASE_STATE]] = None,
162
- on_click: Optional[EventType[[], BASE_STATE]] = None,
163
- on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
164
- on_double_click: Optional[EventType[[], BASE_STATE]] = None,
165
- on_drop: Optional[
166
- Union[EventType[[], BASE_STATE], EventType[[Any], BASE_STATE]]
167
- ] = None,
168
- on_focus: Optional[EventType[[], BASE_STATE]] = None,
169
- on_mount: Optional[EventType[[], BASE_STATE]] = None,
170
- on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
171
- on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
172
- on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
173
- on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
174
- on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
175
- on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
176
- on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
177
- on_scroll: Optional[EventType[[], BASE_STATE]] = None,
178
- on_unmount: Optional[EventType[[], BASE_STATE]] = None,
159
+ on_blur: Optional[EventType[()]] = None,
160
+ on_click: Optional[EventType[()]] = None,
161
+ on_context_menu: Optional[EventType[()]] = None,
162
+ on_double_click: Optional[EventType[()]] = None,
163
+ on_drop: Optional[Union[EventType[()], EventType[Any]]] = None,
164
+ on_focus: Optional[EventType[()]] = None,
165
+ on_mount: Optional[EventType[()]] = None,
166
+ on_mouse_down: Optional[EventType[()]] = None,
167
+ on_mouse_enter: Optional[EventType[()]] = None,
168
+ on_mouse_leave: Optional[EventType[()]] = None,
169
+ on_mouse_move: Optional[EventType[()]] = None,
170
+ on_mouse_out: Optional[EventType[()]] = None,
171
+ on_mouse_over: Optional[EventType[()]] = None,
172
+ on_mouse_up: Optional[EventType[()]] = None,
173
+ on_scroll: Optional[EventType[()]] = None,
174
+ on_unmount: Optional[EventType[()]] = None,
179
175
  **props,
180
176
  ) -> "Upload":
181
177
  """Create an upload component.
@@ -226,24 +222,22 @@ class StyledUpload(Upload):
226
222
  class_name: Optional[Any] = None,
227
223
  autofocus: Optional[bool] = None,
228
224
  custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
229
- on_blur: Optional[EventType[[], BASE_STATE]] = None,
230
- on_click: Optional[EventType[[], BASE_STATE]] = None,
231
- on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
232
- on_double_click: Optional[EventType[[], BASE_STATE]] = None,
233
- on_drop: Optional[
234
- Union[EventType[[], BASE_STATE], EventType[[Any], BASE_STATE]]
235
- ] = None,
236
- on_focus: Optional[EventType[[], BASE_STATE]] = None,
237
- on_mount: Optional[EventType[[], BASE_STATE]] = None,
238
- on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
239
- on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
240
- on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
241
- on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
242
- on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
243
- on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
244
- on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
245
- on_scroll: Optional[EventType[[], BASE_STATE]] = None,
246
- on_unmount: Optional[EventType[[], BASE_STATE]] = None,
225
+ on_blur: Optional[EventType[()]] = None,
226
+ on_click: Optional[EventType[()]] = None,
227
+ on_context_menu: Optional[EventType[()]] = None,
228
+ on_double_click: Optional[EventType[()]] = None,
229
+ on_drop: Optional[Union[EventType[()], EventType[Any]]] = None,
230
+ on_focus: Optional[EventType[()]] = None,
231
+ on_mount: Optional[EventType[()]] = None,
232
+ on_mouse_down: Optional[EventType[()]] = None,
233
+ on_mouse_enter: Optional[EventType[()]] = None,
234
+ on_mouse_leave: Optional[EventType[()]] = None,
235
+ on_mouse_move: Optional[EventType[()]] = None,
236
+ on_mouse_out: Optional[EventType[()]] = None,
237
+ on_mouse_over: Optional[EventType[()]] = None,
238
+ on_mouse_up: Optional[EventType[()]] = None,
239
+ on_scroll: Optional[EventType[()]] = None,
240
+ on_unmount: Optional[EventType[()]] = None,
247
241
  **props,
248
242
  ) -> "StyledUpload":
249
243
  """Create the styled upload component.
@@ -294,24 +288,22 @@ class UploadNamespace(ComponentNamespace):
294
288
  class_name: Optional[Any] = None,
295
289
  autofocus: Optional[bool] = None,
296
290
  custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
297
- on_blur: Optional[EventType[[], BASE_STATE]] = None,
298
- on_click: Optional[EventType[[], BASE_STATE]] = None,
299
- on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
300
- on_double_click: Optional[EventType[[], BASE_STATE]] = None,
301
- on_drop: Optional[
302
- Union[EventType[[], BASE_STATE], EventType[[Any], BASE_STATE]]
303
- ] = None,
304
- on_focus: Optional[EventType[[], BASE_STATE]] = None,
305
- on_mount: Optional[EventType[[], BASE_STATE]] = None,
306
- on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
307
- on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
308
- on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
309
- on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
310
- on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
311
- on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
312
- on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
313
- on_scroll: Optional[EventType[[], BASE_STATE]] = None,
314
- on_unmount: Optional[EventType[[], BASE_STATE]] = None,
291
+ on_blur: Optional[EventType[()]] = None,
292
+ on_click: Optional[EventType[()]] = None,
293
+ on_context_menu: Optional[EventType[()]] = None,
294
+ on_double_click: Optional[EventType[()]] = None,
295
+ on_drop: Optional[Union[EventType[()], EventType[Any]]] = None,
296
+ on_focus: Optional[EventType[()]] = None,
297
+ on_mount: Optional[EventType[()]] = None,
298
+ on_mouse_down: Optional[EventType[()]] = None,
299
+ on_mouse_enter: Optional[EventType[()]] = None,
300
+ on_mouse_leave: Optional[EventType[()]] = None,
301
+ on_mouse_move: Optional[EventType[()]] = None,
302
+ on_mouse_out: Optional[EventType[()]] = None,
303
+ on_mouse_over: Optional[EventType[()]] = None,
304
+ on_mouse_up: Optional[EventType[()]] = None,
305
+ on_scroll: Optional[EventType[()]] = None,
306
+ on_unmount: Optional[EventType[()]] = None,
315
307
  **props,
316
308
  ) -> "StyledUpload":
317
309
  """Create the styled upload component.
@@ -14,7 +14,7 @@ from reflex.components.radix.themes.layout.box import Box
14
14
  from reflex.constants.colors import Color
15
15
  from reflex.event import set_clipboard
16
16
  from reflex.style import Style
17
- from reflex.utils import console, format
17
+ from reflex.utils import format
18
18
  from reflex.utils.imports import ImportVar
19
19
  from reflex.vars.base import LiteralVar, Var, VarData
20
20
 
@@ -382,7 +382,7 @@ for theme_name in dir(Theme):
382
382
  class CodeBlock(Component, MarkdownComponentMap):
383
383
  """A code block."""
384
384
 
385
- library = "react-syntax-highlighter@15.6.0"
385
+ library = "react-syntax-highlighter@15.6.1"
386
386
 
387
387
  tag = "PrismAsyncLight"
388
388
 
@@ -438,6 +438,8 @@ class CodeBlock(Component, MarkdownComponentMap):
438
438
  can_copy = props.pop("can_copy", False)
439
439
  copy_button = props.pop("copy_button", None)
440
440
 
441
+ # react-syntax-highlighter doesn't have an explicit "light" or "dark" theme so we use one-light and one-dark
442
+ # themes respectively to ensure code compatibility.
441
443
  if "theme" not in props:
442
444
  # Default color scheme responds to global color mode.
443
445
  props["theme"] = color_mode_cond(
@@ -445,20 +447,9 @@ class CodeBlock(Component, MarkdownComponentMap):
445
447
  dark=Theme.one_dark,
446
448
  )
447
449
 
448
- # react-syntax-highlighter doesn't have an explicit "light" or "dark" theme so we use one-light and one-dark
449
- # themes respectively to ensure code compatibility.
450
- if "theme" in props and not isinstance(props["theme"], Var):
451
- props["theme"] = getattr(Theme, format.to_snake_case(props["theme"])) # type: ignore
452
- console.deprecate(
453
- feature_name="theme prop as string",
454
- reason="Use code_block.themes instead.",
455
- deprecation_version="0.6.0",
456
- removal_version="0.7.0",
457
- )
458
-
459
450
  if can_copy:
460
451
  code = children[0]
461
- copy_button = ( # type: ignore
452
+ copy_button = (
462
453
  copy_button
463
454
  if copy_button is not None
464
455
  else Button.create(
@@ -9,7 +9,7 @@ from typing import Any, ClassVar, Dict, Literal, Optional, Union, overload
9
9
  from reflex.components.component import Component, ComponentNamespace
10
10
  from reflex.components.markdown.markdown import MarkdownComponentMap
11
11
  from reflex.constants.colors import Color
12
- from reflex.event import BASE_STATE, EventType
12
+ from reflex.event import EventType
13
13
  from reflex.style import Style
14
14
  from reflex.vars.base import Var
15
15
 
@@ -938,21 +938,21 @@ class CodeBlock(Component, MarkdownComponentMap):
938
938
  class_name: Optional[Any] = None,
939
939
  autofocus: Optional[bool] = None,
940
940
  custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
941
- on_blur: Optional[EventType[[], BASE_STATE]] = None,
942
- on_click: Optional[EventType[[], BASE_STATE]] = None,
943
- on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
944
- on_double_click: Optional[EventType[[], BASE_STATE]] = None,
945
- on_focus: Optional[EventType[[], BASE_STATE]] = None,
946
- on_mount: Optional[EventType[[], BASE_STATE]] = None,
947
- on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
948
- on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
949
- on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
950
- on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
951
- on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
952
- on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
953
- on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
954
- on_scroll: Optional[EventType[[], BASE_STATE]] = None,
955
- on_unmount: Optional[EventType[[], BASE_STATE]] = None,
941
+ on_blur: Optional[EventType[()]] = None,
942
+ on_click: Optional[EventType[()]] = None,
943
+ on_context_menu: Optional[EventType[()]] = None,
944
+ on_double_click: Optional[EventType[()]] = None,
945
+ on_focus: Optional[EventType[()]] = None,
946
+ on_mount: Optional[EventType[()]] = None,
947
+ on_mouse_down: Optional[EventType[()]] = None,
948
+ on_mouse_enter: Optional[EventType[()]] = None,
949
+ on_mouse_leave: Optional[EventType[()]] = None,
950
+ on_mouse_move: Optional[EventType[()]] = None,
951
+ on_mouse_out: Optional[EventType[()]] = None,
952
+ on_mouse_over: Optional[EventType[()]] = None,
953
+ on_mouse_up: Optional[EventType[()]] = None,
954
+ on_scroll: Optional[EventType[()]] = None,
955
+ on_unmount: Optional[EventType[()]] = None,
956
956
  **props,
957
957
  ) -> "CodeBlock":
958
958
  """Create a text component.
@@ -1576,21 +1576,21 @@ class CodeblockNamespace(ComponentNamespace):
1576
1576
  class_name: Optional[Any] = None,
1577
1577
  autofocus: Optional[bool] = None,
1578
1578
  custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
1579
- on_blur: Optional[EventType[[], BASE_STATE]] = None,
1580
- on_click: Optional[EventType[[], BASE_STATE]] = None,
1581
- on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
1582
- on_double_click: Optional[EventType[[], BASE_STATE]] = None,
1583
- on_focus: Optional[EventType[[], BASE_STATE]] = None,
1584
- on_mount: Optional[EventType[[], BASE_STATE]] = None,
1585
- on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
1586
- on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
1587
- on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
1588
- on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
1589
- on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
1590
- on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
1591
- on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
1592
- on_scroll: Optional[EventType[[], BASE_STATE]] = None,
1593
- on_unmount: Optional[EventType[[], BASE_STATE]] = None,
1579
+ on_blur: Optional[EventType[()]] = None,
1580
+ on_click: Optional[EventType[()]] = None,
1581
+ on_context_menu: Optional[EventType[()]] = None,
1582
+ on_double_click: Optional[EventType[()]] = None,
1583
+ on_focus: Optional[EventType[()]] = None,
1584
+ on_mount: Optional[EventType[()]] = None,
1585
+ on_mouse_down: Optional[EventType[()]] = None,
1586
+ on_mouse_enter: Optional[EventType[()]] = None,
1587
+ on_mouse_leave: Optional[EventType[()]] = None,
1588
+ on_mouse_move: Optional[EventType[()]] = None,
1589
+ on_mouse_out: Optional[EventType[()]] = None,
1590
+ on_mouse_over: Optional[EventType[()]] = None,
1591
+ on_mouse_up: Optional[EventType[()]] = None,
1592
+ on_scroll: Optional[EventType[()]] = None,
1593
+ on_unmount: Optional[EventType[()]] = None,
1594
1594
  **props,
1595
1595
  ) -> "CodeBlock":
1596
1596
  """Create a text component.
@@ -165,7 +165,7 @@ class DataEditor(NoSSRComponent):
165
165
 
166
166
  tag = "DataEditor"
167
167
  is_default = True
168
- library: str = "@glideapps/glide-data-grid@^6.0.3"
168
+ library: str | None = "@glideapps/glide-data-grid@^6.0.3"
169
169
  lib_dependencies: List[str] = [
170
170
  "lodash@^4.17.21",
171
171
  "react-responsive-carousel@^3.2.7",
@@ -321,6 +321,8 @@ class DataEditor(NoSSRComponent):
321
321
  Returns:
322
322
  The import dict.
323
323
  """
324
+ if self.library is None:
325
+ return {}
324
326
  return {
325
327
  "": f"{format.format_library_name(self.library)}/dist/index.css",
326
328
  self.library: "GridCellKind",
@@ -343,9 +345,9 @@ class DataEditor(NoSSRComponent):
343
345
  data_callback = self.get_cell_content._js_expr
344
346
  else:
345
347
  data_callback = f"getData_{editor_id}"
346
- self.get_cell_content = Var(_js_expr=data_callback) # type: ignore
348
+ self.get_cell_content = Var(_js_expr=data_callback)
347
349
 
348
- code = [f"function {data_callback}([col, row])" "{"]
350
+ code = [f"function {data_callback}([col, row]){{"]
349
351
 
350
352
  columns_path = str(self.columns)
351
353
  data_path = str(self.data)
@@ -385,7 +387,8 @@ class DataEditor(NoSSRComponent):
385
387
  raise ValueError(
386
388
  "DataEditor data must be an ArrayVar if rows is not provided."
387
389
  )
388
- props["rows"] = data.length() if isinstance(data, Var) else len(data)
390
+
391
+ props["rows"] = data.length() if isinstance(data, ArrayVar) else len(data)
389
392
 
390
393
  if not isinstance(columns, Var) and len(columns):
391
394
  if types.is_dataframe(type(data)) or (
@@ -10,7 +10,7 @@ from typing_extensions import TypedDict
10
10
 
11
11
  from reflex.base import Base
12
12
  from reflex.components.component import NoSSRComponent
13
- from reflex.event import BASE_STATE, EventType
13
+ from reflex.event import EventType
14
14
  from reflex.style import Style
15
15
  from reflex.utils.imports import ImportDict
16
16
  from reflex.utils.serializers import serializer
@@ -183,93 +183,79 @@ class DataEditor(NoSSRComponent):
183
183
  class_name: Optional[Any] = None,
184
184
  autofocus: Optional[bool] = None,
185
185
  custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
186
- on_blur: Optional[EventType[[], BASE_STATE]] = None,
186
+ on_blur: Optional[EventType[()]] = None,
187
187
  on_cell_activated: Optional[
188
- Union[EventType[[], BASE_STATE], EventType[[tuple[int, int]], BASE_STATE]]
188
+ Union[EventType[()], EventType[tuple[int, int]]]
189
189
  ] = None,
190
190
  on_cell_clicked: Optional[
191
- Union[EventType[[], BASE_STATE], EventType[[tuple[int, int]], BASE_STATE]]
191
+ Union[EventType[()], EventType[tuple[int, int]]]
192
192
  ] = None,
193
193
  on_cell_context_menu: Optional[
194
- Union[EventType[[], BASE_STATE], EventType[[tuple[int, int]], BASE_STATE]]
194
+ Union[EventType[()], EventType[tuple[int, int]]]
195
195
  ] = None,
196
196
  on_cell_edited: Optional[
197
197
  Union[
198
- EventType[[], BASE_STATE],
199
- EventType[[tuple[int, int]], BASE_STATE],
200
- EventType[[tuple[int, int], GridCell], BASE_STATE],
198
+ EventType[()],
199
+ EventType[tuple[int, int]],
200
+ EventType[tuple[int, int], GridCell],
201
201
  ]
202
202
  ] = None,
203
- on_click: Optional[EventType[[], BASE_STATE]] = None,
203
+ on_click: Optional[EventType[()]] = None,
204
204
  on_column_resize: Optional[
205
- Union[
206
- EventType[[], BASE_STATE],
207
- EventType[[GridColumn], BASE_STATE],
208
- EventType[[GridColumn, int], BASE_STATE],
209
- ]
205
+ Union[EventType[()], EventType[GridColumn], EventType[GridColumn, int]]
210
206
  ] = None,
211
- on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
212
- on_delete: Optional[
213
- Union[EventType[[], BASE_STATE], EventType[[GridSelection], BASE_STATE]]
214
- ] = None,
215
- on_double_click: Optional[EventType[[], BASE_STATE]] = None,
207
+ on_context_menu: Optional[EventType[()]] = None,
208
+ on_delete: Optional[Union[EventType[()], EventType[GridSelection]]] = None,
209
+ on_double_click: Optional[EventType[()]] = None,
216
210
  on_finished_editing: Optional[
217
211
  Union[
218
- EventType[[], BASE_STATE],
219
- EventType[[Union[GridCell, None]], BASE_STATE],
220
- EventType[[Union[GridCell, None], tuple[int, int]], BASE_STATE],
212
+ EventType[()],
213
+ EventType[Union[GridCell, None]],
214
+ EventType[Union[GridCell, None], tuple[int, int]],
221
215
  ]
222
216
  ] = None,
223
- on_focus: Optional[EventType[[], BASE_STATE]] = None,
217
+ on_focus: Optional[EventType[()]] = None,
224
218
  on_group_header_clicked: Optional[
225
219
  Union[
226
- EventType[[], BASE_STATE],
227
- EventType[[tuple[int, int]], BASE_STATE],
228
- EventType[[tuple[int, int], GridCell], BASE_STATE],
220
+ EventType[()],
221
+ EventType[tuple[int, int]],
222
+ EventType[tuple[int, int], GridCell],
229
223
  ]
230
224
  ] = None,
231
225
  on_group_header_context_menu: Optional[
232
226
  Union[
233
- EventType[[], BASE_STATE],
234
- EventType[[int], BASE_STATE],
235
- EventType[[int, GroupHeaderClickedEventArgs], BASE_STATE],
227
+ EventType[()],
228
+ EventType[int],
229
+ EventType[int, GroupHeaderClickedEventArgs],
236
230
  ]
237
231
  ] = None,
238
232
  on_group_header_renamed: Optional[
239
- Union[
240
- EventType[[], BASE_STATE],
241
- EventType[[str], BASE_STATE],
242
- EventType[[str, str], BASE_STATE],
243
- ]
233
+ Union[EventType[()], EventType[str], EventType[str, str]]
244
234
  ] = None,
245
235
  on_header_clicked: Optional[
246
- Union[EventType[[], BASE_STATE], EventType[[tuple[int, int]], BASE_STATE]]
236
+ Union[EventType[()], EventType[tuple[int, int]]]
247
237
  ] = None,
248
238
  on_header_context_menu: Optional[
249
- Union[EventType[[], BASE_STATE], EventType[[tuple[int, int]], BASE_STATE]]
239
+ Union[EventType[()], EventType[tuple[int, int]]]
250
240
  ] = None,
251
241
  on_header_menu_click: Optional[
252
- Union[
253
- EventType[[], BASE_STATE],
254
- EventType[[int], BASE_STATE],
255
- EventType[[int, Rectangle], BASE_STATE],
256
- ]
242
+ Union[EventType[()], EventType[int], EventType[int, Rectangle]]
257
243
  ] = None,
258
244
  on_item_hovered: Optional[
259
- Union[EventType[[], BASE_STATE], EventType[[tuple[int, int]], BASE_STATE]]
245
+ Union[EventType[()], EventType[tuple[int, int]]]
260
246
  ] = None,
261
- on_mount: Optional[EventType[[], BASE_STATE]] = None,
262
- on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
263
- on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
264
- on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
265
- on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
266
- on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
267
- on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
268
- on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
269
- on_row_appended: Optional[EventType[[], BASE_STATE]] = None,
270
- on_scroll: Optional[EventType[[], BASE_STATE]] = None,
271
- on_selection_cleared: Optional[EventType[[], BASE_STATE]] = None,
272
- on_unmount: Optional[EventType[[], BASE_STATE]] = None,
247
+ on_mount: Optional[EventType[()]] = None,
248
+ on_mouse_down: Optional[EventType[()]] = None,
249
+ on_mouse_enter: Optional[EventType[()]] = None,
250
+ on_mouse_leave: Optional[EventType[()]] = None,
251
+ on_mouse_move: Optional[EventType[()]] = None,
252
+ on_mouse_out: Optional[EventType[()]] = None,
253
+ on_mouse_over: Optional[EventType[()]] = None,
254
+ on_mouse_up: Optional[EventType[()]] = None,
255
+ on_row_appended: Optional[EventType[()]] = None,
256
+ on_scroll: Optional[EventType[()]] = None,
257
+ on_selection_cleared: Optional[EventType[()]] = None,
258
+ on_unmount: Optional[EventType[()]] = None,
273
259
  **props,
274
260
  ) -> "DataEditor":
275
261
  """Create the DataEditor component.
@@ -5,20 +5,22 @@ from typing import Union
5
5
  import reflex as rx
6
6
 
7
7
 
8
- def svg_logo(color: Union[str, rx.Var[str]] = rx.color_mode_cond("#110F1F", "white")):
8
+ def svg_logo(
9
+ color: Union[str, rx.Var[str]] = rx.color_mode_cond("#110F1F", "white"),
10
+ **props,
11
+ ):
9
12
  """A Reflex logo SVG.
10
13
 
11
14
  Args:
12
15
  color: The color of the logo.
16
+ props: Extra props to pass to the svg component.
13
17
 
14
18
  Returns:
15
19
  The Reflex logo SVG.
16
20
  """
17
21
 
18
- def logo_path(d):
19
- return rx.el.svg.path(
20
- d=d,
21
- )
22
+ def logo_path(d: str):
23
+ return rx.el.svg.path(d=d)
22
24
 
23
25
  paths = [
24
26
  "M0 11.5999V0.399902H8.96V4.8799H6.72V2.6399H2.24V4.8799H6.72V7.1199H2.24V11.5999H0ZM6.72 11.5999V7.1199H8.96V11.5999H6.72Z",
@@ -31,11 +33,14 @@ def svg_logo(color: Union[str, rx.Var[str]] = rx.color_mode_cond("#110F1F", "whi
31
33
 
32
34
  return rx.el.svg(
33
35
  *[logo_path(d) for d in paths],
34
- width="56",
35
- height="12",
36
- viewBox="0 0 56 12",
36
+ rx.el.title("Reflex"),
37
+ aria_label="Reflex",
38
+ role="img",
39
+ width=props.pop("width", "56"),
40
+ height=props.pop("height", "12"),
37
41
  fill=color,
38
42
  xmlns="http://www.w3.org/2000/svg",
43
+ **props,
39
44
  )
40
45
 
41
46
 
@@ -602,7 +602,7 @@ class ShikiCodeBlock(Component, MarkdownComponentMap):
602
602
 
603
603
  transformer_styles = {}
604
604
  # Collect styles from transformers and wrapper
605
- for transformer in code_block.transformers._var_value: # type: ignore
605
+ for transformer in code_block.transformers._var_value: # pyright: ignore [reportAttributeAccessIssue]
606
606
  if isinstance(transformer, ShikiBaseTransformers) and transformer.style:
607
607
  transformer_styles.update(transformer.style)
608
608
  transformer_styles.update(code_wrapper_props.pop("style", {}))
@@ -621,18 +621,22 @@ class ShikiCodeBlock(Component, MarkdownComponentMap):
621
621
 
622
622
  Returns:
623
623
  Imports for the component.
624
+
625
+ Raises:
626
+ ValueError: If the transformers are not of type LiteralVar.
624
627
  """
625
628
  imports = defaultdict(list)
629
+ if not isinstance(self.transformers, LiteralVar):
630
+ raise ValueError(
631
+ f"transformers should be a LiteralVar type. Got {type(self.transformers)} instead."
632
+ )
626
633
  for transformer in self.transformers._var_value:
627
634
  if isinstance(transformer, ShikiBaseTransformers):
628
635
  imports[transformer.library].extend(
629
636
  [ImportVar(tag=str(fn)) for fn in transformer.fns]
630
637
  )
631
- (
638
+ if transformer.library not in self.lib_dependencies:
632
639
  self.lib_dependencies.append(transformer.library)
633
- if transformer.library not in self.lib_dependencies
634
- else None
635
- )
636
640
  return imports
637
641
 
638
642
  @classmethod
@@ -653,8 +657,9 @@ class ShikiCodeBlock(Component, MarkdownComponentMap):
653
657
  raise ValueError(
654
658
  f"the function names should be str names of functions in the specified transformer: {library!r}"
655
659
  )
656
- return ShikiBaseTransformers( # type: ignore
657
- library=library, fns=[FunctionStringVar.create(fn) for fn in fns]
660
+ return ShikiBaseTransformers(
661
+ library=library,
662
+ fns=[FunctionStringVar.create(fn) for fn in fns], # pyright: ignore [reportCallIssue]
658
663
  )
659
664
 
660
665
  def _render(self, props: dict[str, Any] | None = None):
@@ -757,13 +762,13 @@ class ShikiHighLevelCodeBlock(ShikiCodeBlock):
757
762
 
758
763
  if can_copy:
759
764
  code = children[0]
760
- copy_button = ( # type: ignore
765
+ copy_button = (
761
766
  copy_button
762
767
  if copy_button is not None
763
768
  else Button.create(
764
769
  Icon.create(tag="copy", size=16, color=color("gray", 11)),
765
770
  on_click=[
766
- set_clipboard(cls._strip_transformer_triggers(code)), # type: ignore
771
+ set_clipboard(cls._strip_transformer_triggers(code)),
767
772
  copy_script(),
768
773
  ],
769
774
  style=Style(