mirror of
https://github.com/usememos/memos.git
synced 2024-11-11 01:12:40 +08:00
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:
parent
b7df1f5bbf
commit
2658b1fd09
2 changed files with 14 additions and 3 deletions
|
@ -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);
|
||||
},
|
||||
}),
|
||||
[]
|
||||
|
|
|
@ -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") {
|
||||
|
|
Loading…
Reference in a new issue