|
@@ -1,3 +1,5 @@
|
|
|
|
|
+import { useEffect } from 'react';
|
|
|
|
|
+
|
|
|
import { markdown, markdownLanguage } from '@codemirror/lang-markdown';
|
|
import { markdown, markdownLanguage } from '@codemirror/lang-markdown';
|
|
|
import { languages } from '@codemirror/language-data';
|
|
import { languages } from '@codemirror/language-data';
|
|
|
import { EditorState, Extension } from '@codemirror/state';
|
|
import { EditorState, Extension } from '@codemirror/state';
|
|
@@ -5,9 +7,9 @@ import { EditorView, scrollPastEnd } from '@codemirror/view';
|
|
|
import { useCodeMirror, type UseCodeMirror } from '@uiw/react-codemirror';
|
|
import { useCodeMirror, type UseCodeMirror } from '@uiw/react-codemirror';
|
|
|
|
|
|
|
|
|
|
|
|
|
-export type UseCodeMirrorEditor = UseCodeMirror
|
|
|
|
|
|
|
+export type UseCodeMirrorEditor = UseCodeMirror;
|
|
|
|
|
|
|
|
-type UseCodeMirrorEditorStates = {
|
|
|
|
|
|
|
+export type UseCodeMirrorEditorStates = {
|
|
|
state: EditorState | undefined;
|
|
state: EditorState | undefined;
|
|
|
setState: import('react').Dispatch<import('react').SetStateAction<EditorState | undefined>>;
|
|
setState: import('react').Dispatch<import('react').SetStateAction<EditorState | undefined>>;
|
|
|
view: EditorView | undefined;
|
|
view: EditorView | undefined;
|
|
@@ -21,9 +23,20 @@ const defaultExtensions: Extension[] = [
|
|
|
scrollPastEnd(),
|
|
scrollPastEnd(),
|
|
|
];
|
|
];
|
|
|
|
|
|
|
|
-export const useCodeMirrorEditor = (props: UseCodeMirrorEditor): UseCodeMirrorEditorStates => {
|
|
|
|
|
- return useCodeMirror({
|
|
|
|
|
|
|
+export const useCodeMirrorEditor = (props?: UseCodeMirrorEditor): UseCodeMirrorEditorStates => {
|
|
|
|
|
+
|
|
|
|
|
+ const codemirror = useCodeMirror({
|
|
|
extensions: defaultExtensions,
|
|
extensions: defaultExtensions,
|
|
|
...props,
|
|
...props,
|
|
|
});
|
|
});
|
|
|
|
|
+
|
|
|
|
|
+ const { setContainer } = codemirror;
|
|
|
|
|
+
|
|
|
|
|
+ useEffect(() => {
|
|
|
|
|
+ if (props?.container != null) {
|
|
|
|
|
+ setContainer(props.container);
|
|
|
|
|
+ }
|
|
|
|
|
+ }, [props?.container, setContainer]);
|
|
|
|
|
+
|
|
|
|
|
+ return codemirror;
|
|
|
};
|
|
};
|