Yuki Takei 2 лет назад
Родитель
Сommit
c71c9c8ee9

+ 7 - 0
apps/app/src/components/PageEditor/PageEditor.tsx

@@ -512,6 +512,13 @@ export const PageEditor = React.memo((props: Props): JSX.Element => {
     };
   }, [saveAndReturnToViewHandler]);
 
+  // set handler to save with shortcut key
+  useEffect(() => {
+    // TODO impl
+    return function cleanup() {
+    };
+  }, []);
+
   // set handler to focus
   useLayoutEffect(() => {
     if (editorMode === EditorMode.Editor) {

+ 12 - 1
packages/editor/src/services/codemirror-editor/use-codemirror-editor.ts

@@ -2,7 +2,9 @@ import { useCallback, useEffect } from 'react';
 
 import { markdown, markdownLanguage } from '@codemirror/lang-markdown';
 import { languages } from '@codemirror/language-data';
-import { EditorState, type EditorStateConfig, type Extension } from '@codemirror/state';
+import {
+  EditorState, StateEffect, type EditorStateConfig, type Extension,
+} from '@codemirror/state';
 import { basicSetup, useCodeMirror, type UseCodeMirror } from '@uiw/react-codemirror';
 
 import { UseCodeMirrorEditorStates } from './interfaces/react-codemirror';
@@ -12,6 +14,7 @@ export type UseCodeMirrorEditor = UseCodeMirror;
 type UseCodeMirrorEditorUtils = {
   initState: (config?: EditorStateConfig) => void,
   initDoc: (doc?: string) => void,
+  appendExtension: (extension: Extension) => void,
   getDoc: () => string | undefined,
   focus: () => void,
   setCaretLine: (lineNumber?: number) => void,
@@ -62,6 +65,13 @@ export const useCodeMirrorEditor = (props?: UseCodeMirrorEditor): UseCodeMirrorE
     initState({ doc });
   }, [initState]);
 
+  // implement appendExtension method
+  const appendExtension = useCallback((extension: Extension): void => {
+    view?.dispatch({
+      effects: StateEffect.appendConfig.of(extension),
+    });
+  }, [view]);
+
   // implement getDoc method
   const getDoc = useCallback((): string | undefined => {
     return view?.state.doc.toString();
@@ -99,6 +109,7 @@ export const useCodeMirrorEditor = (props?: UseCodeMirrorEditor): UseCodeMirrorE
     ...codemirror,
     initState,
     initDoc,
+    appendExtension,
     getDoc,
     focus,
     setCaretLine,