feat: support command + k shortcuts insert []() (#793)

* feat: support `command + k` shortcuts insert []()

* fix: eslint

* fix: clear code

* fix: eslint

* feat: insert [](url)

* refactor: rename param

* fix: eslint
This commit is contained in:
ChasLui 2022-12-20 18:51:22 +08:00 committed by GitHub
parent b7df1f5bbf
commit 2658b1fd09
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 3 deletions

View file

@ -9,7 +9,7 @@ export interface EditorRefActions {
getContent: () => string;
getSelectedContent: () => string;
getCursorPosition: () => number;
setCursorPosition: (pos: number) => void;
setCursorPosition: (startPos: number, endPos?: number) => void;
}
interface Props {
@ -105,8 +105,9 @@ const Editor = forwardRef(function Editor(props: Props, ref: React.ForwardedRef<
const end = editorRef.current?.selectionEnd;
return editorRef.current?.value.slice(start, end) ?? "";
},
setCursorPosition: (pos: number) => {
editorRef.current?.setSelectionRange(pos, pos);
setCursorPosition: (startPos: number, endPos?: number) => {
const _endPos = isNaN(endPos as number) ? startPos : (endPos as number);
editorRef.current?.setSelectionRange(startPos, _endPos);
},
}),
[]

View file

@ -122,6 +122,16 @@ const MemoEditor = () => {
editorRef.current.insertText("", "`", "`");
return;
}
if (event.key === "k") {
event.preventDefault();
const selectedContent = editorRef.current.getSelectedContent();
editorRef.current.insertText("", "[", "](url)");
if (selectedContent) {
const startPos = editorRef.current.getCursorPosition() + 2;
const endPos = startPos + 3;
editorRef.current.setCursorPosition(startPos, endPos);
}
}
}
if (event.key === "Enter") {