This is an automated email from the ASF dual-hosted git repository.

robin0716 pushed a commit to branch feat/1.3.5/embed
in repository https://gitbox.apache.org/repos/asf/incubator-answer.git

commit d82e2b63c105c030c1cffa982aa0849a1b84b7a5
Author: robin <[email protected]>
AuthorDate: Mon May 27 13:56:47 2024 +0800

    feat(Editor): add useEditor hook with EditorProps interface
---
 ui/src/components/Editor/utils/index.ts | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/ui/src/components/Editor/utils/index.ts 
b/ui/src/components/Editor/utils/index.ts
index d380620b..98af87de 100644
--- a/ui/src/components/Editor/utils/index.ts
+++ b/ui/src/components/Editor/utils/index.ts
@@ -69,6 +69,15 @@ export function htmlRender(el: HTMLElement | null) {
   });
 }
 
+interface EditorProps {
+  editorRef: React.RefObject<HTMLDivElement>;
+  placeholder: string;
+  autoFocus: boolean;
+  onChange?: (value: string) => void;
+  onFocus?: () => void;
+  onBlur?: () => void;
+}
+
 export const useEditor = ({
   editorRef,
   placeholder: placeholderText,
@@ -76,7 +85,7 @@ export const useEditor = ({
   onChange,
   onFocus,
   onBlur,
-}) => {
+}: EditorProps) => {
   const [editor, setEditor] = useState<Editor | null>(null);
   const [value, setValue] = useState<string>('');
   const init = async () => {
@@ -115,7 +124,7 @@ export const useEditor = ({
     });
 
     const view = new EditorView({
-      parent: editorRef.current,
+      parent: editorRef.current!,
       state: startState,
     });
 
@@ -150,10 +159,10 @@ export const useEditor = ({
   }, [value]);
 
   useEffect(() => {
-    if (!(editorRef.current instanceof HTMLElement) || editor) {
+    if (editorRef.current!.children.length > 0 || editor) {
       return;
     }
     init();
-  }, [editor]);
+  }, [editor, editorRef.current]);
   return editor;
 };

Reply via email to