Răsfoiți Sursa

add event types to suneditor (#4209)

Khaleel Al-Adhami 7 luni în urmă
părinte
comite
3ab750fecd
2 a modificat fișierele cu 51 adăugiri și 23 ștergeri
  1. 40 16
      reflex/components/suneditor/editor.py
  2. 11 7
      reflex/components/suneditor/editor.pyi

+ 40 - 16
reflex/components/suneditor/editor.py

@@ -3,11 +3,11 @@
 from __future__ import annotations
 from __future__ import annotations
 
 
 import enum
 import enum
-from typing import Dict, List, Literal, Optional, Union
+from typing import Dict, List, Literal, Optional, Tuple, Union
 
 
 from reflex.base import Base
 from reflex.base import Base
 from reflex.components.component import Component, NoSSRComponent
 from reflex.components.component import Component, NoSSRComponent
-from reflex.event import EventHandler
+from reflex.event import EventHandler, empty_event, identity_event
 from reflex.utils.format import to_camel_case
 from reflex.utils.format import to_camel_case
 from reflex.utils.imports import ImportDict, ImportVar
 from reflex.utils.imports import ImportDict, ImportVar
 from reflex.vars.base import Var
 from reflex.vars.base import Var
@@ -68,6 +68,35 @@ class EditorOptions(Base):
     button_list: Optional[List[Union[List[str], str]]]
     button_list: Optional[List[Union[List[str], str]]]
 
 
 
 
+def on_blur_spec(e: Var, content: Var[str]) -> Tuple[Var[str]]:
+    """A helper function to specify the on_blur event handler.
+
+    Args:
+        e: The event.
+        content: The content of the editor.
+
+    Returns:
+        A tuple containing the content of the editor.
+    """
+    return (content,)
+
+
+def on_paste_spec(
+    e: Var, clean_data: Var[str], max_char_count: Var[bool]
+) -> Tuple[Var[str], Var[bool]]:
+    """A helper function to specify the on_paste event handler.
+
+    Args:
+        e: The event.
+        clean_data: The clean data.
+        max_char_count: The maximum character count.
+
+    Returns:
+        A tuple containing the clean data and the maximum character count.
+    """
+    return (clean_data, max_char_count)
+
+
 class Editor(NoSSRComponent):
 class Editor(NoSSRComponent):
     """A Rich Text Editor component based on SunEditor.
     """A Rich Text Editor component based on SunEditor.
     Not every JS prop is listed here (some are not easily usable from python),
     Not every JS prop is listed here (some are not easily usable from python),
@@ -178,36 +207,31 @@ class Editor(NoSSRComponent):
     disable_toolbar: Var[bool]
     disable_toolbar: Var[bool]
 
 
     # Fired when the editor content changes.
     # Fired when the editor content changes.
-    on_change: EventHandler[lambda content: [content]]
+    on_change: EventHandler[identity_event(str)]
 
 
     # Fired when the something is inputted in the editor.
     # Fired when the something is inputted in the editor.
-    on_input: EventHandler[lambda e: [e]]
+    on_input: EventHandler[empty_event]
 
 
     # Fired when the editor loses focus.
     # Fired when the editor loses focus.
-    on_blur: EventHandler[lambda e, content: [content]]
+    on_blur: EventHandler[on_blur_spec]
 
 
     # Fired when the editor is loaded.
     # Fired when the editor is loaded.
-    on_load: EventHandler[lambda reload: [reload]]
-
-    # Fired when the editor is resized.
-    on_resize_editor: EventHandler[lambda height, prev_height: [height, prev_height]]
+    on_load: EventHandler[identity_event(bool)]
 
 
     # Fired when the editor content is copied.
     # Fired when the editor content is copied.
-    on_copy: EventHandler[lambda e, clipboard_data: [clipboard_data]]
+    on_copy: EventHandler[empty_event]
 
 
     # Fired when the editor content is cut.
     # Fired when the editor content is cut.
-    on_cut: EventHandler[lambda e, clipboard_data: [clipboard_data]]
+    on_cut: EventHandler[empty_event]
 
 
     # Fired when the editor content is pasted.
     # Fired when the editor content is pasted.
-    on_paste: EventHandler[
-        lambda e, clean_data, max_char_count: [clean_data, max_char_count]
-    ]
+    on_paste: EventHandler[on_paste_spec]
 
 
     # Fired when the code view is toggled.
     # Fired when the code view is toggled.
-    toggle_code_view: EventHandler[lambda is_code_view: [is_code_view]]
+    toggle_code_view: EventHandler[identity_event(bool)]
 
 
     # Fired when the full screen mode is toggled.
     # Fired when the full screen mode is toggled.
-    toggle_full_screen: EventHandler[lambda is_full_screen: [is_full_screen]]
+    toggle_full_screen: EventHandler[identity_event(bool)]
 
 
     def add_imports(self) -> ImportDict:
     def add_imports(self) -> ImportDict:
         """Add imports for the Editor component.
         """Add imports for the Editor component.

+ 11 - 7
reflex/components/suneditor/editor.pyi

@@ -4,7 +4,7 @@
 # This file was generated by `reflex/utils/pyi_generator.py`!
 # This file was generated by `reflex/utils/pyi_generator.py`!
 # ------------------------------------------------------
 # ------------------------------------------------------
 import enum
 import enum
-from typing import Any, Dict, List, Literal, Optional, Union, overload
+from typing import Any, Dict, List, Literal, Optional, Tuple, Union, overload
 
 
 from reflex.base import Base
 from reflex.base import Base
 from reflex.components.component import NoSSRComponent
 from reflex.components.component import NoSSRComponent
@@ -44,6 +44,11 @@ class EditorOptions(Base):
     rtl: Optional[bool]
     rtl: Optional[bool]
     button_list: Optional[List[Union[List[str], str]]]
     button_list: Optional[List[Union[List[str], str]]]
 
 
+def on_blur_spec(e: Var, content: Var[str]) -> Tuple[Var[str]]: ...
+def on_paste_spec(
+    e: Var, clean_data: Var[str], max_char_count: Var[bool]
+) -> Tuple[Var[str], Var[bool]]: ...
+
 class Editor(NoSSRComponent):
 class Editor(NoSSRComponent):
     def add_imports(self) -> ImportDict: ...
     def add_imports(self) -> ImportDict: ...
     @overload
     @overload
@@ -122,15 +127,15 @@ class Editor(NoSSRComponent):
         class_name: Optional[Any] = None,
         class_name: Optional[Any] = None,
         autofocus: Optional[bool] = None,
         autofocus: Optional[bool] = None,
         custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
         custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
-        on_blur: Optional[EventType] = None,
+        on_blur: Optional[EventType[str]] = None,
         on_change: Optional[EventType] = None,
         on_change: Optional[EventType] = None,
         on_click: Optional[EventType[[]]] = None,
         on_click: Optional[EventType[[]]] = None,
         on_context_menu: Optional[EventType[[]]] = None,
         on_context_menu: Optional[EventType[[]]] = None,
-        on_copy: Optional[EventType] = None,
-        on_cut: Optional[EventType] = None,
+        on_copy: Optional[EventType[[]]] = None,
+        on_cut: Optional[EventType[[]]] = None,
         on_double_click: Optional[EventType[[]]] = None,
         on_double_click: Optional[EventType[[]]] = None,
         on_focus: Optional[EventType[[]]] = None,
         on_focus: Optional[EventType[[]]] = None,
-        on_input: Optional[EventType] = None,
+        on_input: Optional[EventType[[]]] = None,
         on_load: Optional[EventType] = None,
         on_load: Optional[EventType] = None,
         on_mount: Optional[EventType[[]]] = None,
         on_mount: Optional[EventType[[]]] = None,
         on_mouse_down: Optional[EventType[[]]] = None,
         on_mouse_down: Optional[EventType[[]]] = None,
@@ -140,8 +145,7 @@ class Editor(NoSSRComponent):
         on_mouse_out: Optional[EventType[[]]] = None,
         on_mouse_out: Optional[EventType[[]]] = None,
         on_mouse_over: Optional[EventType[[]]] = None,
         on_mouse_over: Optional[EventType[[]]] = None,
         on_mouse_up: Optional[EventType[[]]] = None,
         on_mouse_up: Optional[EventType[[]]] = None,
-        on_paste: Optional[EventType] = None,
-        on_resize_editor: Optional[EventType] = None,
+        on_paste: Optional[EventType[str, bool]] = None,
         on_scroll: Optional[EventType[[]]] = None,
         on_scroll: Optional[EventType[[]]] = None,
         on_unmount: Optional[EventType[[]]] = None,
         on_unmount: Optional[EventType[[]]] = None,
         toggle_code_view: Optional[EventType] = None,
         toggle_code_view: Optional[EventType] = None,