feat: optimize the logic of the checkbox button. (#2227)

This commit is contained in:
Zeng1998
2023-09-18 20:37:28 +08:00
committed by GitHub
parent 58026c52ea
commit 462f10ab60
2 changed files with 37 additions and 6 deletions

View File

@ -322,14 +322,24 @@ const MemoEditor = (props: Props) => {
if (!editorRef.current) {
return;
}
const cursorPosition = editorRef.current.getCursorPosition();
const prevValue = editorRef.current.getContent().slice(0, cursorPosition);
if (prevValue === "" || prevValue.endsWith("\n")) {
editorRef.current?.insertText("", "- [ ] ");
const currentPosition = editorRef.current?.getCursorPosition();
const currentLineNumber = editorRef.current?.getCursorLineNumber();
const currentLine = editorRef.current?.getLine(currentLineNumber);
let newLine = "";
let cursorChange = 0;
if (/^- \[( |x|X)\] /.test(currentLine)) {
newLine = currentLine.replace(/^- \[( |x|X)\] /, "");
cursorChange = -6;
} else if (/^\d+\. |- /.test(currentLine)) {
const match = currentLine.match(/^\d+\. |- /) ?? [""];
newLine = currentLine.replace(/^\d+\. |- /, "- [ ] ");
cursorChange = -match[0].length + 6;
} else {
editorRef.current?.insertText("", "\n- [ ] ");
newLine = "- [ ] " + currentLine;
cursorChange = 6;
}
editorRef.current?.setLine(currentLineNumber, newLine);
editorRef.current.setCursorPosition(currentPosition + cursorChange);
editorRef.current?.scrollToCursor();
};