reflex 0.6.3a4__py3-none-any.whl → 0.6.4__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 (96) hide show
  1. reflex/.templates/jinja/web/pages/_app.js.jinja2 +2 -2
  2. reflex/.templates/jinja/web/utils/context.js.jinja2 +3 -1
  3. reflex/.templates/web/components/reflex/radix_themes_color_mode_provider.js +3 -3
  4. reflex/.templates/web/components/shiki/code.js +29 -0
  5. reflex/.templates/web/jsconfig.json +2 -1
  6. reflex/.templates/web/utils/state.js +6 -4
  7. reflex/__init__.py +6 -3
  8. reflex/__init__.pyi +4 -3
  9. reflex/app.py +6 -5
  10. reflex/compiler/compiler.py +6 -7
  11. reflex/compiler/utils.py +8 -1
  12. reflex/components/base/error_boundary.py +37 -24
  13. reflex/components/base/error_boundary.pyi +8 -7
  14. reflex/components/component.py +9 -4
  15. reflex/components/core/banner.py +2 -2
  16. reflex/components/core/client_side_routing.py +1 -1
  17. reflex/components/core/clipboard.py +1 -1
  18. reflex/components/core/clipboard.pyi +1 -1
  19. reflex/components/core/cond.py +1 -1
  20. reflex/components/core/debounce.py +5 -1
  21. reflex/components/core/upload.py +7 -9
  22. reflex/components/core/upload.pyi +2 -2
  23. reflex/components/datadisplay/code.py +1 -1
  24. reflex/components/datadisplay/dataeditor.py +83 -18
  25. reflex/components/datadisplay/dataeditor.pyi +67 -15
  26. reflex/components/datadisplay/shiki_code_block.py +813 -0
  27. reflex/components/datadisplay/shiki_code_block.pyi +2211 -0
  28. reflex/components/dynamic.py +3 -3
  29. reflex/components/el/elements/forms.py +37 -23
  30. reflex/components/el/elements/forms.pyi +7 -4
  31. reflex/components/markdown/markdown.py +12 -1
  32. reflex/components/moment/moment.pyi +1 -1
  33. reflex/components/radix/primitives/drawer.pyi +2 -2
  34. reflex/components/radix/themes/base.py +2 -2
  35. reflex/components/radix/themes/color_mode.pyi +1 -1
  36. reflex/components/radix/themes/components/alert_dialog.pyi +1 -1
  37. reflex/components/radix/themes/components/checkbox.pyi +3 -3
  38. reflex/components/radix/themes/components/context_menu.pyi +1 -1
  39. reflex/components/radix/themes/components/dialog.pyi +2 -2
  40. reflex/components/radix/themes/components/dropdown_menu.pyi +2 -2
  41. reflex/components/radix/themes/components/hover_card.pyi +2 -2
  42. reflex/components/radix/themes/components/popover.pyi +1 -1
  43. reflex/components/radix/themes/components/radio_cards.pyi +1 -1
  44. reflex/components/radix/themes/components/radio_group.pyi +1 -1
  45. reflex/components/radix/themes/components/select.pyi +6 -6
  46. reflex/components/radix/themes/components/switch.pyi +1 -1
  47. reflex/components/radix/themes/components/tabs.pyi +2 -2
  48. reflex/components/radix/themes/components/tooltip.pyi +4 -2
  49. reflex/components/react_player/__init__.py +1 -0
  50. reflex/components/react_player/audio.pyi +6 -3
  51. reflex/components/react_player/react_player.py +12 -1
  52. reflex/components/react_player/react_player.pyi +11 -3
  53. reflex/components/react_player/video.pyi +6 -3
  54. reflex/components/recharts/recharts.py +2 -2
  55. reflex/components/sonner/toast.py +1 -1
  56. reflex/components/suneditor/editor.py +40 -16
  57. reflex/components/suneditor/editor.pyi +15 -11
  58. reflex/config.py +284 -20
  59. reflex/constants/__init__.py +2 -0
  60. reflex/constants/base.py +53 -31
  61. reflex/constants/compiler.py +2 -12
  62. reflex/constants/config.py +1 -2
  63. reflex/constants/installer.py +88 -32
  64. reflex/constants/style.py +1 -1
  65. reflex/constants/utils.py +32 -0
  66. reflex/custom_components/custom_components.py +3 -3
  67. reflex/event.py +152 -84
  68. reflex/experimental/__init__.py +2 -0
  69. reflex/experimental/client_state.py +1 -1
  70. reflex/experimental/layout.pyi +1 -1
  71. reflex/istate/storage.py +144 -0
  72. reflex/model.py +8 -11
  73. reflex/reflex.py +18 -17
  74. reflex/state.py +89 -151
  75. reflex/style.py +1 -1
  76. reflex/testing.py +2 -1
  77. reflex/utils/build.py +0 -12
  78. reflex/utils/exceptions.py +8 -0
  79. reflex/utils/exec.py +22 -4
  80. reflex/utils/imports.py +6 -0
  81. reflex/utils/net.py +2 -4
  82. reflex/utils/path_ops.py +7 -21
  83. reflex/utils/prerequisites.py +11 -17
  84. reflex/utils/pyi_generator.py +91 -3
  85. reflex/utils/registry.py +2 -6
  86. reflex/utils/types.py +14 -0
  87. reflex/vars/base.py +453 -424
  88. reflex/vars/function.py +6 -16
  89. reflex/vars/number.py +46 -67
  90. reflex/vars/object.py +1 -31
  91. reflex/vars/sequence.py +177 -47
  92. {reflex-0.6.3a4.dist-info → reflex-0.6.4.dist-info}/METADATA +1 -1
  93. {reflex-0.6.3a4.dist-info → reflex-0.6.4.dist-info}/RECORD +96 -91
  94. {reflex-0.6.3a4.dist-info → reflex-0.6.4.dist-info}/LICENSE +0 -0
  95. {reflex-0.6.3a4.dist-info → reflex-0.6.4.dist-info}/WHEEL +0 -0
  96. {reflex-0.6.3a4.dist-info → reflex-0.6.4.dist-info}/entry_points.txt +0 -0
@@ -5,6 +5,8 @@ from __future__ import annotations
5
5
  from enum import Enum
6
6
  from typing import Any, Dict, List, Literal, Optional, Tuple, Union
7
7
 
8
+ from typing_extensions import TypedDict
9
+
8
10
  from reflex.base import Base
9
11
  from reflex.components.component import Component, NoSSRComponent
10
12
  from reflex.components.literals import LiteralRowMarker
@@ -107,17 +109,76 @@ class DataEditorTheme(Base):
107
109
  text_medium: Optional[str] = None
108
110
 
109
111
 
110
- def on_edit_spec(pos, data: dict[str, Any]):
111
- """The on edit spec function.
112
+ class Bounds(TypedDict):
113
+ """The bounds of the group header."""
112
114
 
113
- Args:
114
- pos: The position of the edit event.
115
- data: The data of the edit event.
115
+ x: int
116
+ y: int
117
+ width: int
118
+ height: int
119
+
120
+
121
+ class CompatSelection(TypedDict):
122
+ """The selection."""
123
+
124
+ items: list
125
+
126
+
127
+ class Rectangle(TypedDict):
128
+ """The bounds of the group header."""
129
+
130
+ x: int
131
+ y: int
132
+ width: int
133
+ height: int
134
+
135
+
136
+ class GridSelectionCurrent(TypedDict):
137
+ """The current selection."""
138
+
139
+ cell: tuple[int, int]
140
+ range: Rectangle
141
+ rangeStack: list[Rectangle]
116
142
 
117
- Returns:
118
- The position and data.
119
- """
120
- return [pos, data]
143
+
144
+ class GridSelection(TypedDict):
145
+ """The grid selection."""
146
+
147
+ current: Optional[GridSelectionCurrent]
148
+ columns: CompatSelection
149
+ rows: CompatSelection
150
+
151
+
152
+ class GroupHeaderClickedEventArgs(TypedDict):
153
+ """The arguments for the group header clicked event."""
154
+
155
+ kind: str
156
+ group: str
157
+ location: tuple[int, int]
158
+ bounds: Bounds
159
+ isEdge: bool
160
+ shiftKey: bool
161
+ ctrlKey: bool
162
+ metaKey: bool
163
+ isTouch: bool
164
+ localEventX: int
165
+ localEventY: int
166
+ button: int
167
+ buttons: int
168
+ scrollEdge: tuple[int, int]
169
+
170
+
171
+ class GridCell(TypedDict):
172
+ """The grid cell."""
173
+
174
+ span: Optional[List[int]]
175
+
176
+
177
+ class GridColumn(TypedDict):
178
+ """The grid column."""
179
+
180
+ title: str
181
+ group: Optional[str]
121
182
 
122
183
 
123
184
  class DataEditor(NoSSRComponent):
@@ -232,16 +293,18 @@ class DataEditor(NoSSRComponent):
232
293
  on_cell_context_menu: EventHandler[identity_event(Tuple[int, int])]
233
294
 
234
295
  # Fired when a cell is edited.
235
- on_cell_edited: EventHandler[on_edit_spec]
296
+ on_cell_edited: EventHandler[identity_event(Tuple[int, int], GridCell)]
236
297
 
237
298
  # Fired when a group header is clicked.
238
- on_group_header_clicked: EventHandler[on_edit_spec]
299
+ on_group_header_clicked: EventHandler[identity_event(Tuple[int, int], GridCell)]
239
300
 
240
301
  # Fired when a group header is right-clicked.
241
- on_group_header_context_menu: EventHandler[lambda grp_idx, data: [grp_idx, data]]
302
+ on_group_header_context_menu: EventHandler[
303
+ identity_event(int, GroupHeaderClickedEventArgs)
304
+ ]
242
305
 
243
306
  # Fired when a group header is renamed.
244
- on_group_header_renamed: EventHandler[lambda idx, val: [idx, val]]
307
+ on_group_header_renamed: EventHandler[identity_event(str, str)]
245
308
 
246
309
  # Fired when a header is clicked.
247
310
  on_header_clicked: EventHandler[identity_event(Tuple[int, int])]
@@ -250,16 +313,18 @@ class DataEditor(NoSSRComponent):
250
313
  on_header_context_menu: EventHandler[identity_event(Tuple[int, int])]
251
314
 
252
315
  # Fired when a header menu item is clicked.
253
- on_header_menu_click: EventHandler[lambda col, pos: [col, pos]]
316
+ on_header_menu_click: EventHandler[identity_event(int, Rectangle)]
254
317
 
255
318
  # Fired when an item is hovered.
256
319
  on_item_hovered: EventHandler[identity_event(Tuple[int, int])]
257
320
 
258
321
  # Fired when a selection is deleted.
259
- on_delete: EventHandler[lambda selection: [selection]]
322
+ on_delete: EventHandler[identity_event(GridSelection)]
260
323
 
261
324
  # Fired when editing is finished.
262
- on_finished_editing: EventHandler[lambda new_value, movement: [new_value, movement]]
325
+ on_finished_editing: EventHandler[
326
+ identity_event(Union[GridCell, None], tuple[int, int])
327
+ ]
263
328
 
264
329
  # Fired when a row is appended.
265
330
  on_row_appended: EventHandler[empty_event]
@@ -268,7 +333,7 @@ class DataEditor(NoSSRComponent):
268
333
  on_selection_cleared: EventHandler[empty_event]
269
334
 
270
335
  # Fired when a column is resized.
271
- on_column_resize: EventHandler[lambda col, width: [col, width]]
336
+ on_column_resize: EventHandler[identity_event(GridColumn, int)]
272
337
 
273
338
  def add_imports(self) -> ImportDict:
274
339
  """Add imports for the component.
@@ -279,7 +344,7 @@ class DataEditor(NoSSRComponent):
279
344
  return {
280
345
  "": f"{format.format_library_name(self.library)}/dist/index.css",
281
346
  self.library: "GridCellKind",
282
- "/utils/helpers/dataeditor.js": ImportVar(
347
+ "$/utils/helpers/dataeditor.js": ImportVar(
283
348
  tag="formatDataEditorCells", is_default=False, install=False
284
349
  ),
285
350
  }
@@ -6,6 +6,8 @@
6
6
  from enum import Enum
7
7
  from typing import Any, Dict, List, Literal, Optional, Union, overload
8
8
 
9
+ from typing_extensions import TypedDict
10
+
9
11
  from reflex.base import Base
10
12
  from reflex.components.component import NoSSRComponent
11
13
  from reflex.event import EventType
@@ -76,7 +78,53 @@ class DataEditorTheme(Base):
76
78
  text_light: Optional[str]
77
79
  text_medium: Optional[str]
78
80
 
79
- def on_edit_spec(pos, data: dict[str, Any]): ...
81
+ class Bounds(TypedDict):
82
+ x: int
83
+ y: int
84
+ width: int
85
+ height: int
86
+
87
+ class CompatSelection(TypedDict):
88
+ items: list
89
+
90
+ class Rectangle(TypedDict):
91
+ x: int
92
+ y: int
93
+ width: int
94
+ height: int
95
+
96
+ class GridSelectionCurrent(TypedDict):
97
+ cell: tuple[int, int]
98
+ range: Rectangle
99
+ rangeStack: list[Rectangle]
100
+
101
+ class GridSelection(TypedDict):
102
+ current: Optional[GridSelectionCurrent]
103
+ columns: CompatSelection
104
+ rows: CompatSelection
105
+
106
+ class GroupHeaderClickedEventArgs(TypedDict):
107
+ kind: str
108
+ group: str
109
+ location: tuple[int, int]
110
+ bounds: Bounds
111
+ isEdge: bool
112
+ shiftKey: bool
113
+ ctrlKey: bool
114
+ metaKey: bool
115
+ isTouch: bool
116
+ localEventX: int
117
+ localEventY: int
118
+ button: int
119
+ buttons: int
120
+ scrollEdge: tuple[int, int]
121
+
122
+ class GridCell(TypedDict):
123
+ span: Optional[List[int]]
124
+
125
+ class GridColumn(TypedDict):
126
+ title: str
127
+ group: Optional[str]
80
128
 
81
129
  class DataEditor(NoSSRComponent):
82
130
  def add_imports(self) -> ImportDict: ...
@@ -136,24 +184,28 @@ class DataEditor(NoSSRComponent):
136
184
  autofocus: Optional[bool] = None,
137
185
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
138
186
  on_blur: Optional[EventType[[]]] = None,
139
- on_cell_activated: Optional[EventType] = None,
140
- on_cell_clicked: Optional[EventType] = None,
141
- on_cell_context_menu: Optional[EventType] = None,
142
- on_cell_edited: Optional[EventType] = None,
187
+ on_cell_activated: Optional[EventType[tuple[int, int]]] = None,
188
+ on_cell_clicked: Optional[EventType[tuple[int, int]]] = None,
189
+ on_cell_context_menu: Optional[EventType[tuple[int, int]]] = None,
190
+ on_cell_edited: Optional[EventType[tuple[int, int], GridCell]] = None,
143
191
  on_click: Optional[EventType[[]]] = None,
144
- on_column_resize: Optional[EventType] = None,
192
+ on_column_resize: Optional[EventType[GridColumn, int]] = None,
145
193
  on_context_menu: Optional[EventType[[]]] = None,
146
- on_delete: Optional[EventType] = None,
194
+ on_delete: Optional[EventType[GridSelection]] = None,
147
195
  on_double_click: Optional[EventType[[]]] = None,
148
- on_finished_editing: Optional[EventType] = None,
196
+ on_finished_editing: Optional[
197
+ EventType[Union[GridCell, None], tuple[int, int]]
198
+ ] = None,
149
199
  on_focus: Optional[EventType[[]]] = None,
150
- on_group_header_clicked: Optional[EventType] = None,
151
- on_group_header_context_menu: Optional[EventType] = None,
152
- on_group_header_renamed: Optional[EventType] = None,
153
- on_header_clicked: Optional[EventType] = None,
154
- on_header_context_menu: Optional[EventType] = None,
155
- on_header_menu_click: Optional[EventType] = None,
156
- on_item_hovered: Optional[EventType] = None,
200
+ on_group_header_clicked: Optional[EventType[tuple[int, int], GridCell]] = None,
201
+ on_group_header_context_menu: Optional[
202
+ EventType[int, GroupHeaderClickedEventArgs]
203
+ ] = None,
204
+ on_group_header_renamed: Optional[EventType[str, str]] = None,
205
+ on_header_clicked: Optional[EventType[tuple[int, int]]] = None,
206
+ on_header_context_menu: Optional[EventType[tuple[int, int]]] = None,
207
+ on_header_menu_click: Optional[EventType[int, Rectangle]] = None,
208
+ on_item_hovered: Optional[EventType[tuple[int, int]]] = None,
157
209
  on_mount: Optional[EventType[[]]] = None,
158
210
  on_mouse_down: Optional[EventType[[]]] = None,
159
211
  on_mouse_enter: Optional[EventType[[]]] = None,