From fe5ba6850b99ab03564ef7a90f81e2e6bc55f796 Mon Sep 17 00:00:00 2001 From: boojack Date: Sun, 23 Oct 2022 20:28:30 +0800 Subject: [PATCH] chore: update insert content in editor (#336) --- web/src/components/Editor/Editor.tsx | 6 ++-- web/src/components/MemoEditor.tsx | 48 +++++++++++++--------------- 2 files changed, 26 insertions(+), 28 deletions(-) diff --git a/web/src/components/Editor/Editor.tsx b/web/src/components/Editor/Editor.tsx index 05525735..dd544373 100644 --- a/web/src/components/Editor/Editor.tsx +++ b/web/src/components/Editor/Editor.tsx @@ -47,19 +47,19 @@ const Editor = forwardRef((props: Props, ref: React.ForwardedRef { editorRef.current?.focus(); }, - insertText: (content = "", prefix = "", suffix = prefix) => { + insertText: (content = "", prefix = "", suffix = "") => { if (!editorRef.current) { return; } + const cursorPosition = editorRef.current.selectionStart; const endPosition = editorRef.current.selectionEnd; const prevValue = editorRef.current.value; const value = prevValue.slice(0, cursorPosition) + prefix + - prevValue.slice(cursorPosition, endPosition) + + (content || prevValue.slice(cursorPosition, endPosition)) + suffix + - content + prevValue.slice(endPosition); editorRef.current.value = value; diff --git a/web/src/components/MemoEditor.tsx b/web/src/components/MemoEditor.tsx index d746caa7..25075b38 100644 --- a/web/src/components/MemoEditor.tsx +++ b/web/src/components/MemoEditor.tsx @@ -76,38 +76,36 @@ const MemoEditor: React.FC = () => { prevGlobalStateRef.current = editorState; }, [state, editorState.editMemoId]); - const handleInsertMark = (mark: string) => { - editorRef.current?.insertText("", mark); - }; - const handleKeyDown = (event: React.KeyboardEvent) => { if (event.key === "Escape" && state.fullscreen) { handleFullscreenBtnClick(); return; } - if (event.key === "Enter" && (event.ctrlKey || event.metaKey)) { - handleSaveBtnClick(); - return; - } if (event.key === "Tab") { event.preventDefault(); editorRef.current?.insertText(" ".repeat(TAB_SPACE_WIDTH)); return; } if (event.ctrlKey || event.metaKey) { - event.preventDefault(); - switch (event.key) { - case "b": - handleInsertMark("**"); - break; - case "i": - handleInsertMark("*"); - break; - case "e": - handleInsertMark("`"); - break; + if (event.key === "Enter") { + handleSaveBtnClick(); + return; + } + if (event.key === "b") { + event.preventDefault(); + editorRef.current?.insertText("", "**", "**"); + return; + } + if (event.key === "i") { + event.preventDefault(); + editorRef.current?.insertText("", "*", "*"); + return; + } + if (event.key === "e") { + event.preventDefault(); + editorRef.current?.insertText("", "`", "`"); + return; } - return; } }; @@ -235,9 +233,9 @@ const MemoEditor: React.FC = () => { const cursorPosition = editorRef.current.getCursorPosition(); const prevValue = editorRef.current.getContent().slice(0, cursorPosition); if (prevValue === "" || prevValue.endsWith("\n")) { - editorRef.current?.insertText("- [ ] "); + editorRef.current?.insertText("", "- [ ] "); } else { - editorRef.current?.insertText("\n- [ ] "); + editorRef.current?.insertText("", "\n- [ ] "); } }; @@ -249,9 +247,9 @@ const MemoEditor: React.FC = () => { const cursorPosition = editorRef.current.getCursorPosition(); const prevValue = editorRef.current.getContent().slice(0, cursorPosition); if (prevValue === "" || prevValue.endsWith("\n")) { - editorRef.current?.insertText("```\n\n```"); + editorRef.current?.insertText("", "```\n", "\n```"); } else { - editorRef.current?.insertText("\n```\n\n```"); + editorRef.current?.insertText("", "\n```\n", "\n```"); } }; @@ -375,7 +373,7 @@ const MemoEditor: React.FC = () => { )} -